Connecting Reach RS2 to Laptop using a Ethernet RJ45 Connector

  1. Firmware image and ReachView version: v2.20.7
  2. system report
Simple system report
app version: 2.20.7-rs2-rc0-r0
'wifi_status, interface: wlan0':
- wifi_mode: infrastructure
- ip: 131.220.233.182
  is_added: true
  is_connected: true
  is_visible: false
  mac_address: 6C:21:A2:92:72:88
  security: wpa-psk
  ssid: AndroidAP42
  uuid: e16118f9-3b36-4d24-a373-5d8788f3e211
base mode:
  base coordinates:
    accumulation: '2'
    antenna offset:
      east: '0'
      north: '0'
      up: '0'
    coordinates:
    - '0'
    - '0'
    - '0'
    format: llh
    mode: single-and-hold
  output:
    enabled: true
    format: rtcm3
    path: tcpsvr://:9000#rtcm3
    type: tcpsvr
  rtcm3 messages:
    '1006':
      enabled: true
      frequency: '0.1'
    '1074':
      enabled: true
      frequency: '1'
    '1084':
      enabled: true
      frequency: '1'
    '1094':
      enabled: false
      frequency: '1'
    '1124':
      enabled: false
      frequency: '1'
bluetooth:
  discoverable: false
  enabled: false
  pin: '***'
correction input:
  input2:
    enabled: true
    format: rtcm3
    path: ttyMFD2:38400:8:n:1:off
    send position to base: 'off'
    type: serial
  input3:
    enabled: false
    format: rtcm3
    path: :9028
    type: tcpsvr
logging:
  base:
    format: RTCM3
    started: true
    version: null
  correction:
    format: RTCM3
    started: true
    version: null
  interval: 24
  overwrite: true
  raw:
    format: UBX
    started: true
    version: null
  solution:
    format: LLH
    started: true
    version: null
lora:
  air rate: 2.6000000000000001
  frequency: 868000
  output power: 20
position output:
  output1:
    enabled: true
    format: nmea
    path: bluetooth
    type: bluetooth
  output2:
    enabled: true
    format: llh
    path: :9001
    type: tcpsvr
  output3:
    enabled: true
    format: llh
    path: :2014
    type: tcpsvr
  output4:
    enabled: true
    format: llh_ext
    path: :2015
    type: tcpsvr
rtk settings:
  elevation mask angle: '15'
  glonass ar mode: 'off'
  gps ar mode: fix-and-hold
  max horizontal acceleration: '1'
  max vertical acceleration: '1'
  positioning mode: kinematic
  positioning systems:
    compass: true
    galileo: true
    glonass: true
    gps: true
    qzss: true
  snr mask: '35'
  update rate: '5'
  1. Detailed problem description. How does observed behavior differ from the expected one?

We need to access an Emlid Reach RS2 unit through an ethernet switch, due some constraints, we can’t just use the USB-C connection. That’s why we thought of using a USB-RJ45 converter. A really simple diagram of the system is shown below

We can access the RS2 unit through WiFi and via the USB cable, but we can’t make it work.

After digging deep into the shown system, we realized that the Linux board on the RS2 doesn’t have the drivers to communicate with this particular dongle (USB-RJ45) or any other dongle around there.

We’ve found the drivers for this particular dongle: AX88179_DRIVER BUT we couldn’t access the root user on the linux board on the RS2. This means that we can’t cross-compile the driver and load it into the running kernel or use the open embedded package manager to install a pre-compiled driver.

Is there any way to access to root user for the RS2 linux board? We’ve tried with emlidreach, root and stuff like that but non of them worked. Also oelinux123 didn’t work

3.1) Logs
For this step we compare the kernel messages on the RS2 board and compared it against an Ubuntu 18.04 OS

Ubuntu 18.04 Logs
@laptop:$ dmesg
[263164.813481] usb 2-6.2: new SuperSpeed USB device number 6 using xhci_hcd
[263164.839477] usb 2-6.2: New USB device found, idVendor=0b95, idProduct=1790
[263164.839479] usb 2-6.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[263164.839480] usb 2-6.2: Product: AX88179
[263164.839481] usb 2-6.2: Manufacturer: ASIX Elec. Corp.
[263164.839482] usb 2-6.2: SerialNumber: 000050B61FB501
[263165.748581] ax88179_178a 2-6.2:1.0 eth0: register 'ax88179_178a' at usb-0000:00:14.0-6.2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:50:b6:1f:b5:01
[263165.750331] usbcore: registered new interface driver ax88179_178a
[263165.760125] ax88179_178a 2-6.2:1.0 enx0050b61fb501: renamed from eth0

@laptop:$ lsusb 
Bus 002 Device 006: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet

@laptop:$ lsub -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
    |__ Port 6: Dev 2, If 0, Class=Hub, Driver=hub/2p, 5000M
        |__ Port 2: Dev 6, If 0, Class=Vendor Specific Class, Driver=ax88179_178a, 5000M

@laptop:$ lsusb -v
Bus 002 Device 006: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol         0 
  bMaxPacketSize0         9
  idVendor           0x0b95 ASIX Electronics Corp.
  idProduct          0x1790 AX88179 Gigabit Ethernet
  bcdDevice            1.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           57
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              124mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      0 
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              11
        bMaxBurst               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               3
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15

@laptop:$ lsmod | grep ax 
ax88179_178a           24576  0
usbnet                 45056  2 cdc_ether,ax88179_178a
mii                    16384  3 usbnet,r8152,ax88179_178a

# Driver is in /lib/modules/4.15.0-58-generic/kernel/drivers/net/usb/ax88179_178a.ko
RS2 Logs
reach:~$ dmesg
[ 1817.848953] usb 1-1: new high-speed USB device number 2 using ehci-platform

reach:~$ lsusb
Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet

reach:~$ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-platform/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 480M

reach:~$ lsusb -v
Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0b95 ASIX Electronics Corp.
  idProduct          0x1790 AX88179 Gigabit Ethernet
  bcdDevice            1.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              248mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol      0 
      iInterface              4 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              11
      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     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0

reach:~$ lsmod
Module                  Size  Used by
bnep                   20480  2
reachrs_plus_pmu       24576  8
hci_uart               24576  0
btbcm                  16384  1 hci_uart
cp210x                 24576  1
bluetooth             319488  22 hci_uart,bnep,btbcm
brcmfmac              221184  0
brcmutil               16384  1 brcmfmac
usb_f_acm              16384  1
u_serial               20480  1 usb_f_acm
usb_f_ecm              16384  1
g_cdc                  16384  0
u_ether                20480  2 usb_f_ecm,g_cdc
libcomposite           40960  3 usb_f_ecm,usb_f_acm,g_cdc
configfs               28672  4 usb_f_ecm,usb_f_acm,libcomposite

reach:~$ find /lib/modules/4.17.19/kernel/
/lib/modules/4.17.19/kernel/
/lib/modules/4.17.19/kernel/lib
/lib/modules/4.17.19/kernel/lib/zlib_deflate
/lib/modules/4.17.19/kernel/lib/zlib_deflate/zlib_deflate.ko
/lib/modules/4.17.19/kernel/lib/crc-ccitt.ko
/lib/modules/4.17.19/kernel/net
/lib/modules/4.17.19/kernel/net/bluetooth
/lib/modules/4.17.19/kernel/net/bluetooth/bnep
/lib/modules/4.17.19/kernel/net/bluetooth/bnep/bnep.ko
/lib/modules/4.17.19/kernel/net/bluetooth/rfcomm
/lib/modules/4.17.19/kernel/net/bluetooth/rfcomm/rfcomm.ko
/lib/modules/4.17.19/kernel/net/bluetooth/bluetooth.ko
/lib/modules/4.17.19/kernel/net/bluetooth/hidp
/lib/modules/4.17.19/kernel/net/bluetooth/hidp/hidp.ko
/lib/modules/4.17.19/kernel/drivers
/lib/modules/4.17.19/kernel/drivers/reachrs-plus-pmu
/lib/modules/4.17.19/kernel/drivers/reachrs-plus-pmu/reachrs_plus_pmu.ko
/lib/modules/4.17.19/kernel/drivers/net
/lib/modules/4.17.19/kernel/drivers/net/slip
/lib/modules/4.17.19/kernel/drivers/net/slip/slhc.ko
/lib/modules/4.17.19/kernel/drivers/net/wireless
/lib/modules/4.17.19/kernel/drivers/net/wireless/broadcom
/lib/modules/4.17.19/kernel/drivers/net/wireless/broadcom/brcm80211
/lib/modules/4.17.19/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil
/lib/modules/4.17.19/kernel/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
/lib/modules/4.17.19/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac
/lib/modules/4.17.19/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp
/lib/modules/4.17.19/kernel/drivers/net/ppp/ppp_deflate.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/pppox.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/ppp_mppe.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/bsd_comp.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/ppp_generic.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/ppp_synctty.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/pppoe.ko
/lib/modules/4.17.19/kernel/drivers/net/ppp/ppp_async.ko
/lib/modules/4.17.19/kernel/drivers/usb
/lib/modules/4.17.19/kernel/drivers/usb/gadget
/lib/modules/4.17.19/kernel/drivers/usb/gadget/libcomposite.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/legacy
/lib/modules/4.17.19/kernel/drivers/usb/gadget/legacy/g_multi.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/legacy/g_cdc.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/legacy/g_mass_storage.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/legacy/g_acm_ms.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/legacy/g_ffs.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/usb_f_mass_storage.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/u_ether.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/u_serial.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/usb_f_acm.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/usb_f_ecm.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/usb_f_fs.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
/lib/modules/4.17.19/kernel/drivers/usb/gadget/function/usb_f_ecm_subset.ko
/lib/modules/4.17.19/kernel/drivers/usb/storage
/lib/modules/4.17.19/kernel/drivers/usb/storage/uas.ko
/lib/modules/4.17.19/kernel/drivers/usb/serial
/lib/modules/4.17.19/kernel/drivers/usb/serial/ftdi_sio.ko
/lib/modules/4.17.19/kernel/drivers/usb/serial/cp210x.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth
/lib/modules/4.17.19/kernel/drivers/bluetooth/btsdio.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/bpa10x.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/hci_uart.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/btrtl.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/ath3k.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/btintel.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/bcm203x.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/btmrvl.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/btmrvl_sdio.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/bfusb.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/btbcm.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/hci_vhci.ko
/lib/modules/4.17.19/kernel/drivers/bluetooth/btusb.ko
/lib/modules/4.17.19/kernel/fs
/lib/modules/4.17.19/kernel/fs/configfs
/lib/modules/4.17.19/kernel/fs/configfs/configfs.ko
/lib/modules/4.17.19/kernel/crypto
/lib/modules/4.17.19/kernel/crypto/echainiv.ko

  1. Your step by step actions.
  • Turn ON RS2
  • Connect USB-Ethernet converter
  • ssh into the RS2 reach@192.168.2.15 (passwd: emlidreach)
  • Inspect the kernel msg to see if it’s comunicating with the dongle
  • Since no driver is there, when we try to reach the RS2 via the network connection we fail.
  1. Picture of the setup and connection scheme.

  2. Specify the exact make and model of the hardware you are integrating.

Reach RS2 L1/L2/L5 RTK GNSS RECEIVER

  1. Proposed solution
    Install the drivers for the USB-Rj45 converter in the RS2 firmware.
    We think we have 2 options, either Emlid provides us with the image that contains the driver or we gain root access and do it by ourselves. If you think there is a better solution for the scheme shown, we are more than welcome to change our approach.

We are also concerned about using other dongle, what if we change the usb-eth converter?

  1. Similar Topics

Thanks a lot in advance

4 Likes

Hi Ignacio,

Could you clarify your difficulties with Wi-Fi connection?

We don’t provide access to the root as adding any custom scripts or drivers may cause issues that we won’t be able to troubleshoot.

Hi Tatiana,
Thanks for the fast reply!

  1. I think I didn’t explain myslef clearly enough. WiFi connection does work. What we can’t make it work is the connection through an ethernet cable. Even when we could use WiFi for our application, we are looking for a more reliable connection.

  2. I understand the reasons why root access is not available. It’s possible to get a custom build firmware with the drivers we need for our application?

Hi Ignacio,

I’m afraid we hardly can provide you with a custom firmware build.

Could you tell more about your project? It’s possible I can suggest you an alternative in resolving it.

It is possible to get USB 3.1 extenders (e.g. Blackbox) that will extend a USB host connection up to 100 metres on structured cabling. Its not beautiful, but it may do what you need.

On the other hand, would a serial port connection from the RS2 be sufficient or do you really need a network or USB connection?

@ignacio_vizzo Could you use the EXT RS2 cable:

https://store.emlid.com/product/reach-rs-cable-2m-db9-male-connector/

and combine that with a RJ-45 ethernet to RS-232 device server (link as an example):

Thanks to all for the help!

Hi Ignacio,
I’m afraid we hardly can provide you with a custom firmware build.
Could you tell more about your project? It’s possible I can suggest you an alternative in resolving it.

@tatiana.andreeva We built a car-mount with 1 Laser scan, 1 GPS, 4 cameras and other sensors. Everything is connected to a local network(using a Gigabit switch) except for the GPS. It would be nice to have all the sensors on the same network, but I see that this is nearly impossible.

It is possible to get USB 3.1 extenders (e.g. Blackbox) that will extend a USB host connection up to 100 metres on structured cabling. Its not beautiful, but it may do what you need.

On the other hand, would a serial port connection from the RS2 be sufficient or do you really need a network or USB connection?

@DirtyHarry Thanks for the suggestion. We do need a network connection, although we are currently using a long USB C cable. It’s not what we wanted, but it does work.

Could you use the EXT RS2 cable: (link)
and combine that with a RJ-45 ethernet to RS-232 device server (link as an example):

@Africawaterdoc I think this is the best solution available right now. Thanks for the suggestion. I’m not sure if we will be able to make this change since we plan to power the GPS using this same connector, and I’d guess that the reach-rs-cable-2m-db9-male-connector + RS232<->RJ45 doesn’t expose the power pin. What do you think?

Thanks a lot to everyone!

@ignacio_vizzo I believe you are right about the power pin on the chord with the pre-attached DB9 connector. But you could get the chord without any second connector:
https://store.emlid.com/product/reach-rs-cable-2m-wo-2nd-connector/

Then you could break out the power lines to your power source and then attach your own DB9 connector (male/female as you need) to the data lines. Then attach the RS232 <=> RJ45 adapter. You’ll probably need to be careful about ensuring a common ground/earth to all of the equipment.

Having a wired Ethernet port is something that you tend to find more on “separate” (that is receiver and wired connection to antenna) units - typically reference style receivers. This is used for management/config or as a port to stream corrections.

Most integrated (receiver/antenna), like the RS2 units tend not to have a wired Ethernet port, as by design they are mostly portable/campaign style rover receivers with less (no?) need for a wired network port.

There are other alternative ublox ZED-F9P based boards which will piggy-back to an Arduino style board with a wired Ethernet shield.

A post was split to a new topic: ReachView access over wired network