Simulating 3DR Solo/Controller

Joined
Mar 21, 2016
Messages
249
Reaction score
75
This is a work in progress but just wanted to share my findings so far. The end goal is to do the following:
  • Use 3DR Controller with PC (Useful for those drone simulators such as DRL that let you use a real controller)
  • Simulate a 3DR Controller for 3DR's Solo Simulator app (This one is tricky because the IP is hardcoded to use 10.1.1.1 and must succeed otherwise app fails)
This project is nothing special. It is more of a "Is it possible?" project.


Findings:
When the Solo Simulator starts up, it SSHes into the hardcoded IP of 10.1.1.1 which is the controller and then runs the following command:

Code:
init 2; echo [IP OF DEVICE RUNNING SIM] > /var/run/solo.ip; init 4
This tells the controller that the Solo will be at the IP address contained in the solo.ip file.

Based on /etc/inittab, one can discover what each init (runlevel) does:
Code:
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevel 2 is multi-user.
# Runlevel 3 is STANDBY (controller/solo not paired).
# Runlevel 4 is READY or FLIGHT (all flight code running).
# Runlevel 5 is MAINTENANCE.
# Runlevel 6 is reboot.

At this point, it switches over to UDP and sends commands back to the controller, presumably to update the telemetry displayed on the controller.

The strange thing is when I interact with the controller, I do not see any data coming off of the controller yet it moves the virtual Solo in the Simulator just fine. I feel I am missing something while sniffing the traffic in between.

Notes:
- I noticed that the Simulator possibly uploads a listener to the controller during the SSH connection but this is unconfirmed.
- When the controller loses connection to the Solo Simulator such as closing the app for example, the controller tries to ping the device over port 5005. The same port is listening on the controller for other devices to ping the controller.
- The controller, not surprisingly, runs what appears to be a master MAVLink on port 14550. This info is based on netstat.
__
You can see the MAVLink communication between the controller and the virtual Solo in the simulator by issuing the following command on your computer:
Code:
mavproxy.py --master=0.0.0.0:14550

I am probably missing an obvious step such as passing in an --out parameter to communicate back to the Solo Simulator but at the moment, I cannot issue commands like arm throttle, takeoff 10, etc. The only thing you can do is just issue read commands such as status.
__



This is all I have for now. Please feel free to contribute or check back later!
 
Last edited:
Can't wait to see if you can solve this one. Actually, I don't understand why 3DR hasn't created a simulator program to run on a PC so we could use our large monitors> Please keep us posted. In the mean time I picked mine up at Best Buy today and am now struggling to find out just what I need for a tablet.
 
Would love to hear if you made any progress on this. I'm trying to figure out if I can get the 3DR controller to think that my PC is a solo. Ideally I'd be able to fool it into thinking any telemetry I feed it (from dronekit-sitl or similar via mavproxy) is from Solo. Was thinking I might be able to modify dronekit-sitl copter-3.3 with a startup script that makes it look more closely match a solo, and connect to controller at 10.1.1.10 spitting out telemetry on 14550.
 
I haven't had as much free time as I used to since I started my new job.

If anyone else is up for the challenge and would like to keep this going then go for it.
 
I haven't had as much free time as I used to since I started my new job.

If anyone else is up for the challenge and would like to keep this going then go for it.

I've had some success with a Android program written for PCs. The program of course is a Linux program and can use the mouse
and even the keyboard but I'm certain it is meant for a notebook with a touchscreen. The Solo app will install on it and I suppose
there might be a way to get the Solo Simulator to work with it so a fella could have a large monitor instead of the Nexus 7 screen
to fly with. Different landscapes and Solo functionality would be nice to have! I came across a review on the Yuneec Q500 simulator
and it looks good for flying with. The graphics are good and it works with their controllers but can a computer monitor can be used
for display alongside of the controller's monitor. Communication is done through a special dongle and a Windows application.
 

Members online

No members online now.

Forum statistics

Threads
13,165
Messages
148,297
Members
16,229
Latest member
gokhan.satilmis