Cellular Solo

Joined
Nov 21, 2016
Messages
4
Reaction score
0
Age
48
Seeing as the wifi modem is PCI-E and it is running Yocto Linux.... Has anyone yet attempted to add the kernel driver, install a cell modem PCI-E card, changed the boot up interface adapter script, and converted their solo into a cellular drone? Any thoughts?
 
Hasn't been attempted yet. It would require modification to the firmware of the companion computer, which until 2 days ago was proprietary and closed. 3DR opened it up on Friday, so I guess it's theoretically possible now.

With a 4G link, you've introduced a third party into it. Once which nobody has any control over. So your failsafes and flight planning must be superb with all the contingencies accounted for. You also need to consider the latency of that link. Flight control inputs will be delayed, so hand flying in tight spaces becomes impractical. The practical application of this is long range pre-programmed missions. Your UAS can fly out of visual and WiFi range on a mission, and your GCS will still have connectivity to monitor and control. Which is really awesome. And also illegal, which should be included in your flight planning.
 
Thanks for the reply! I did not realize that they just opened up the yocto (firmware) project. Any link?

On the latency... LTE typically has the lowest latency. Its even better than 802.11 most of the time due to lower traffic. I agree that it would need to be something to look at, but from a basic scan, it looks like all of the packets are sent thru UDP.

LTE Latency
LTE Latency: How does it compare to other technologies? - OpenSignal Blog
 
I think the setup i would prefer is a OTG USB to an old cell phone with USB in hotspot mode (or a cellular usb module). Keep the wifi for primary controller link. Cellular is backup on say a laptop running mission planner. Would be a neat way to recover a fly away...
 
Seeing as the wifi modem is PCI-E and it is running Yocto Linux.... Has anyone yet attempted to add the kernel driver, install a cell modem PCI-E card, changed the boot up interface adapter script, and converted their solo into a cellular drone? Any thoughts?
Verizon tested the protocol but the result has not released.
 
Seeing as the wifi modem is PCI-E and it is running Yocto Linux.... Has anyone yet attempted to add the kernel driver, install a cell modem PCI-E card, changed the boot up interface adapter script, and converted their solo into a cellular drone? Any thoughts?
Tom,
Any luck with this project
 
I am very temped to try what Terje documented here - to build the usb modules necessary to connect a 4G LTE model to the solo via the accessory bay connector.

The1only/DroneBuildSystem

Solo GameChanger:

g_mulit.ko for Solo, and Controller…...
....enable USB also on the controller and add a USB stick LTE cell phone modem directly to it.


If it is possible to do this with opensolo 4, and get the LTE modem working, then it would be possible to port something based on uavpal's Parrot DISCO/Bebop lte mod - uavpal/beboptwo4g .. Which I've done to both my disco and bebop 2, and it is amazing. Would really like to see if we can do same sort of thing with the solo.
 
Last edited:
I am very temped to try what Terje documented here - to build the usb models necessary to connect a 4G LTE model to the solo via the accessory bay connector.

The1only/DroneBuildSystem

Solo GameChanger:

g_mulit.ko for Solo, and Controller…...
....enable USB also on the controller and add a USB stick LTE cell phone modem directly to it.


If it is possible to do this with opensolo 4, and get the LTE modem working, then it would be possible to port something based on uavpal's Parrot DISCO/Bebop lte mod - uavpal/beboptwo4g .. Which I've done to both my disco and bebop 2, and it is amazing. Would really like to see if we can do same sort of thing with the solo.
I gotta say thank you for digging up the DBS. I hadn't managed to find it despite looking. I have need of it.....
 
I've returned to this topic again. So far I have.

1. Obtained a breakout board for the accessory port: (10 USD)

2. Cut a USB extension cable (2USD) in half and wired it to the usb pins on the accessory breakout board as per:
Note: Making sure to wire the host usb mode OTG enable pin to ground
3DRIDUSB ID pin for OTG port on iMX6 OTG port

3. Attached my USB 4G LTE dongle. On powering up the solo, the LED lights showed the dongle was powering up and connecting to a 4G network.

4. Downloading the kernel device modules from The1only/DroneBuildSystem, and copying them via SSH/SCP onto the solo.

5. After rebooting the solo, I connected via SSH and checked via the lsusb command - which yielded:
Code:
Bus 001 Device 002: ID 12d1:1f01 Huawei Technologies Co., Ltd.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x12d1 Huawei Technologies Co., Ltd.
  idProduct          0x1f01
  bcdDevice            1.02
  iManufacturer           1 HUAWEI_MOBILE
  iProduct                2 HUAWEI_MOBILE
  iSerial                 3 0123456789ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000f
      Device can operate at Low Speed (1Mbps)
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
    bU1DevExitLat           1 micro seconds
    bU2DevExitLat         500 micro seconds
Device Status:     0x0001
  Self Powered

Conclusion so far:
- The 4G dongle is connected, and detected by the solo.
- By default this type of dongle starts up as a usb-mass storage device.
- The solo needs to initiate a usb modeswitch to use it as a cdc_ether device - the code for this is at Draisberghof - Software - USB_ModeSwitch
- Most linux distros have this built in and it happens automatically when a USB LTE dongle is detected. But for the solo this needs to be compiled and added.
- The build instructions / scripts on The1only/DroneBuildSystem no longer work, as some of the git repositories needed for the builder.sh script in OpenSolo/solo-builder don't work or have changed.
- So next I will try to build the latest Opensolo build via the instructions at OpenSolo/OpenSolo, and then try to build usb_modeswitch for the solo.
- If successful this will enable the solo to put the dongle into modem/ethernet device mode, and then should be able to do the necessary ifconfig/dhcp stuff to get it connected to the internet, and then to a Zerotier link.
 
  • Like
Reactions: just_bruce
I've returned to this topic again. So far I have.

1. Obtained a breakout board for the accessory port: (10 USD)

2. Cut a USB extension cable (2USD) in half and wired it to the usb pins on the accessory breakout board as per:
Note: Making sure to wire the host usb mode OTG enable pin to ground
3DRIDUSB ID pin for OTG port on iMX6 OTG port

3. Attached my USB 4G LTE dongle. On powering up the solo, the LED lights showed the dongle was powering up and connecting to a 4G network.

4. Downloading the kernel device modules from The1only/DroneBuildSystem, and copying them via SSH/SCP onto the solo.

5. After rebooting the solo, I connected via SSH and checked via the lsusb command - which yielded:
Code:
Bus 001 Device 002: ID 12d1:1f01 Huawei Technologies Co., Ltd.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x12d1 Huawei Technologies Co., Ltd.
  idProduct          0x1f01
  bcdDevice            1.02
  iManufacturer           1 HUAWEI_MOBILE
  iProduct                2 HUAWEI_MOBILE
  iSerial                 3 0123456789ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000f
      Device can operate at Low Speed (1Mbps)
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
    bU1DevExitLat           1 micro seconds
    bU2DevExitLat         500 micro seconds
Device Status:     0x0001
  Self Powered

Conclusion so far:
- The 4G dongle is connected, and detected by the solo.
- By default this type of dongle starts up as a usb-mass storage device.
- The solo needs to initiate a usb modeswitch to use it as a cdc_ether device - the code for this is at Draisberghof - Software - USB_ModeSwitch
- Most linux distros have this built in and it happens automatically when a USB LTE dongle is detected. But for the solo this needs to be compiled and added.
- The build instructions / scripts on The1only/DroneBuildSystem no longer work, as some of the git repositories needed for the builder.sh script in OpenSolo/solo-builder don't work or have changed.
- So next I will try to build the latest Opensolo build via the instructions at OpenSolo/OpenSolo, and then try to build usb_modeswitch for the solo.
- If successful this will enable the solo to put the dongle into modem/ethernet device mode, and then should be able to do the necessary ifconfig/dhcp stuff to get it connected to the internet, and then to a Zerotier link.

Well you've been a busy little beaver too.... Following your experiments with great interest....
 
  • Like
Reactions: Professorpip
I've got the opensolo code to build at last - details in this thread:

Next is to try to cross-compile usb-modeswitch for solo imx6...
 
I got my Huawei E7732 4G LTE dongle detected by the solo, and into the right mode via using usb_modeswitch

Code:
./usb_modeswitch -v 12d1 -p `lsusb |grep "ID 12d1" | cut -f 3 -d \:` --huawei-new-mode -s 3

Note: No target parameter given; success check limited
Look for default devices ...
Found devices in default mode (1)
Access device 002 on bus 001
Get the current device configuration ...
Current configuration number is 1
Use interface number 0
with class 8
Use endpoints 0x01 (out) and 0x81 (in)
Using standard Huawei switching message
Looking for active drivers ...
Set up interface 0
Use endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
OK, message successfully sent
Read the response to message 1 (CSW) ...
Device seems to have vanished after reading. Good.
Device is gone, skip any further commands

Check for mode switch (max. 3 times, once per second) ...
(For a better success check provide target IDs or class)
Original device vanished after switching

Mode switch most likely succeeded. Bye!

And with lsusb I get

Code:
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Communications, Driver=, 480M
    |__ Port 1: Dev 2, If 1, Class=CDC Data, Driver=, 480M
    |__ Port 1: Dev 2, If 2, Class=Mass Storage, Driver=, 480M


Bus 001 Device 003: ID 12d1:14dc Huawei Technologies Co., Ltd.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x12d1 Huawei Technologies Co., Ltd.
  idProduct          0x14dc
  bcdDevice            1.02
  iManufacturer           1 HUAWEI_MOBILE
  iProduct                2 HUAWEI_MOBILE
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           94
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      6 Ethernet Networking
      bInterfaceProtocol      0
      iInterface              5 CDC Ethernet Control Model (ECM)
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      7 0C5B8F279A64
        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               5
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      6
      bInterfaceProtocol      0
      iInterface              6 CDC Ethernet Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000f
      Device can operate at Low Speed (1Mbps)
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
    bU1DevExitLat           1 micro seconds
    bU2DevExitLat         500 micro seconds
Device Status:     0x0001
  Self Powered
The next challenge is to compile the required cdc_ether.ko module for the solo (using the opensolo build tool), and thus get the dongle actually working as an ethernet device. So far I've not been successful in doing this, but will keep trying.
 
Last edited:
Code:
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ci_hdrc/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Communications, Driver=, 480M
    |__ Port 1: Dev 2, If 1, Class=CDC Data, Driver=, 480M
    |__ Port 1: Dev 2, If 2, Class=Mass Storage, Driver=, 480M


Bus 001 Device 003: ID 12d1:14dc Huawei Technologies Co., Ltd.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            2 Communications
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x12d1 Huawei Technologies Co., Ltd.
  idProduct          0x14dc
  bcdDevice            1.02
  iManufacturer           1 HUAWEI_MOBILE
  iProduct                2 HUAWEI_MOBILE
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           94
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      6 Ethernet Networking
      bInterfaceProtocol      0
      iInterface              5 CDC Ethernet Control Model (ECM)
      CDC Header:
        bcdCDC               1.10
      CDC Union:
        bMasterInterface        0
        bSlaveInterface         1
      CDC Ethernet:
        iMacAddress                      7 0C5B8F279A64
        bmEthernetStatistics    0x00000000
        wMaxSegmentSize               1514
        wNumberMCFilters            0x0000
        bNumberPowerFilters              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               5
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass        10 CDC Data
      bInterfaceSubClass      6
      bInterfaceProtocol      0
      iInterface              6 CDC Ethernet Data
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              4 Mass Storage
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000f
      Device can operate at Low Speed (1Mbps)
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
    bU1DevExitLat           1 micro seconds
    bU2DevExitLat         500 micro seconds
Device Status:     0x0001
  Self Powered
 
  • Like
Reactions: just_bruce
SUCCESS!!

I have got my E3372 4G LTE dongle to work with the solo...and it is connected to the internet!!


Key additional steps to do this were:
1. Rebuild opensolo kernel with cdc_ether module (which is not there by default in the 3dr or opensolo firmware). This took loads of trial and error and pointers from

In addition to the opensolo documentation too

2. Rebuild the opensolo firmware to create a new custom flash file

Code:
Completed binaries have been copied to the /solo-builder/binaries/ directory:
total 73M
-rw-r--r-- 1 vagrant vagrant 73M Apr 22 16:05 3dr-solo.tar.gz
-rw-rw-r-- 1 vagrant vagrant  50 Apr 22 16:05 3dr-solo.tar.gz.md5

3. Flash to the solo - via the instructions on OpenSolo/OpenSolo

4. pair the solo to the artoo controller (as everything gets reset)..

5. SSH into the solo (via 10.1.1.10 , username=root, password = TjSDBkAu ... I was relieved when the built in wifi still worked with my new kernel...

6. Via scp copy the arm binary of usb_modeswitch, chmod +x it, and then run with "usb_modeswitch -v 12d1 -p `lsusb |grep "ID 12d1" | cut -f 3 -d \:` --huawei-new-mode -s 3" to put the 4G LTE dongle into the right mode. (as per my post above)...

5. modprobe cdc_ether and check dmesg that it has been loaded ok.

Code:
[  316.318790] cdc_ether 1-1:1.0 eth0: register 'cdc_ether' at usb-ci_hdrc.0-1, CDC Ethernet Device, 0c:5b:8f:27:9a:64

6. edit /etc/network/interfaces to add "iface eth0 inet dhcp" to it, and then do a "ifup eth0 command", then ping something on the internet to see if it worked!!

Code:
ifup eth0
udhcpc (v1.21.1) started
Sending discover...
Sending select for 192.168.8.100...
Lease of 192.168.8.100 obtained, lease time 86400
/etc/udhcpc.d/50default: Adding DNS 192.168.8.1
/etc/udhcpc.d/50default: Adding DNS 192.168.8.1
root@3dr_solo:~/disco4g-master/disco/uavpal/bin# ping google.com
PING google.com (172.217.169.14): 56 data bytes
64 bytes from 172.217.169.14: seq=0 ttl=52 time=39.465 ms
64 bytes from 172.217.169.14: seq=1 ttl=52 time=29.344 ms

I'm so chuffed to have go this far.... To do next is:
1. Create a SSH port forward from the solo through the 4G internet connection into a internet facing linux box and see if I can create a simple tunnel to a PC running mission planner (I think it is udp port 14550 that I need to forward for the key mavlink) .. This would be the fastest way to try to control the solo over 4g - but not the ultimate goal.
2. With further port forwards, or using something like a vpn then should be able to get the video streaming working too.
3. Ultimate goal is to port over the disco parrot/disco uavpal code (which has been a major inspiration, and from where I got the usb_modeswitch binary too) from uavpal/disco4g ...

HUGE ACKNOWLEDGEMENTS & KUDOS to the group at uavpal who developed the amazing 4g mod for Parrot's Bebop2 and Disco, and who have super-useful info on their wiki. I'm really just trying to adapt/port their work to the solo.

This uses the zerotier network to get around that the solo is behind the 4G network provider's NAT.
4. Consider making equivalent changes to the artoo controller firmware as the uavpal mod does to the parrot controller, so as to have it connect to a mobile phone in hotspot mode, via the zerotier network, to the solo - this is what the uavpal disco and bebop2 mod does (and I can say from my own experience it works seamlessly, with no need to take a PC out to the field)

What with the custom bms emulator, and 10,000mAh battery (Giving over 25 mins of flight time - with gopro and gimbal) - see Generic Battery + Arduino = Happy Solo I think this is potentially one of the cheapest and most capable 'hackable' flying dones out there. It's a such a shame they've been discontinued, but I guess if they hadn't I'd probably never have bought one to tinker with!
...screenshop solo on 4G.png
 
Last edited:
Today I got zerotier-one working on the solo via the 4G LTE connection... So this means I can connect from my laptop running mission planner, to the solo over a 4G vpn link (no wifi required). I had to compile the tun.ko kernel module, and then grab a armhf zerotier binary from a raspberry pi, as the older version that I cross-compiled for the solo didn't seem to work (thanks you Marc, Softice, creator of the uavpal 4G mod for the Parrot Disco and Bebop2's for the tip on this!!)...

Code:
root@3dr_solo:~# ./zerotier-one -q info
200 info 1425e1ddff 1.4.6 ONLINE
root@3dr_solo:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 0C:5B:8F:27:9A:64
          inet addr:192.168.8.100  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:680 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:62060 (60.6 KiB)  TX bytes:94213 (92.0 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:223425 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223425 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:14618016 (13.9 MiB)  TX bytes:14618016 (13.9 MiB)

wlan0     Link encap:Ethernet  HWaddr 88:DC:96:3C:06:95
          inet addr:10.1.1.10  Bcast:10.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::8adc:96ff:fe3c:695/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:30866 errors:0 dropped:0 overruns:0 frame:0
          TX packets:133244 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2142125 (2.0 MiB)  TX bytes:141699132 (135.1 MiB)

ztrf2x6uy2 Link encap:Ethernet  HWaddr 1E:D3:C9:E5:49:6C
          inet addr:172.26.79.166  Bcast:172.26.255.255  Mask:255.255.0.0
          inet6 addr: fc19:9d54:8a14:25e1:ddff::1/40 Scope:Global
          inet6 addr: fe80::1cd3:c9ff:fee5:496c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:2800  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 B)  TX bytes:676 (676.0 B)
 
I wish I could double 'Like' your posts. They are that good....

I'm gonna tap you for your knowledge on compiling when I'm not drowning in insurance paperwork...
 
  • Like
Reactions: Professorpip
I wish I could double 'Like' your posts. They are that good....

I'm gonna tap you for your knowledge on compiling when I'm not drowning in insurance paperwork...
Thanks for the postive feedback. I also had a nice chat with Marc (creator of the uavpal 4G mod), who also was very up to collaborate in terms of leveraging what is proven on the Parrot Disco and Bebop2 (which also are open linux-based drones)... In terms of compiling kernel modules for opensolo - sure - I am keeping notes as I go (I am no expert - not like Matt at al) so am blundering my way through via trial and error and reference to guides from others - but it is quite fun and a good learning experience... Happy to help / share in any way I can.
 

Members online

No members online now.

Forum statistics

Threads
13,093
Messages
147,741
Members
16,048
Latest member
ihatethatihavetomakeanacc