Jetson TX2 Wireless Access Point to Ethernet Bridge

Hi, after looking at several topics here and other websites I was able to get a wireless access point to Ethernet bridge working on the Jetson TX2 (see goal and solution sections below). But I was wondering if anyone could provide any info on:

  1. Why this is working (it seems more simple than I would have thought based on other posts).
  2. If there are any potential improvements that could be made.
  3. If there are any potential issues with this solution.

Thanks in advance for any feedback!

Goal:

  • We will be using the Jetson TX2 (with Connect Tech Quasar carrier board) for a small robot running ROS that will have an internal Ethernet network using a switch so various other peripherals can be connected (e.g. RTSP camera) - so the difference between this and several other posts is that we do not need Internet.
  • And in order to connect a laptop to the robot we want to be able to use the built-in wireless, and avoid having to attach an external radio.
  • But the laptop that connects wirelessly also needs to be able to communicate with the ROS software which will be running using the Ethernet IP.
  • Therefore, we need to bridge the wireless network with the Ethernet network.

Solution:

  1. Do a fresh install of JetPack 4.2 to Jetson TX2 (assuming later JetPack versions should be fine too).
  2. sudo systemctl disable nv-l4t-usb-device-mode.service
  3. sudo systemctl stop nv-l4t-usb-device-mode.service
  4. Add the below text to /etc/modprob.d/bcmdhd.conf
  • options bcmdhd op_mode=2
  1. Uncomment the line in /etc/sysctl.conf that says net.ipv4.ip_forward=1
  2. Copy the ‘Hotspot’ and ‘Wired connection 1’ files (see file contents below) to /etc/NetworkManager/system-connections (some specific file property contents that should not be relevant were replaced with the word “REMOVED”; also these 2 files should be the only files in this directory).
  3. Reboot.
  4. Connect a laptop with a manual Ethernet configuration of IP address of 192.168.1.200 with a 16 bit netmask to the Jetson TX2 via Ethernet (represents a peripheral on the robot).
  5. Connect another laptop (represents a controller) with its wireless network set to automatic to the ssid and psk properties from the ‘Hotspot’ file below (it should automatically be assigned an IP of 192.168.0.x with a 24 bit netmask), then this laptop can ping the following IP addresses:
  • 192.168.1.101 (Jetson TX2 Ethernet)
  • 192.168.1.200 (other laptop)
  • 192.168.0.1 (Jetson TX2 wireless)

‘Hotspot’ file contents:
[connection]
id=Hotspot
uuid=REMOVED
type=wifi
autoconnect=true
permissions=
timestamp=1592845897

[wifi]
hidden=false
mac-address=REMOVED
mac-address-blacklist=
mode=ap
ssid=REMOVED

[wifi-security]
key-mgmt=wpa-psk
psk=12345678

[ipv4]
dns-search=
method=shared
address1=192.168.0.1/24

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=ignore

‘Wired connection 1’ file contents:
[connection]
id=Wired connection 1
uuid=REMOVED
type=ethernet
autoconnect-priority=-999
permissions=
timestamp=1592928250

[ethernet]
duplex=full
mac-address=REMOVED
mac-address-blacklist=

[ipv4]
dns-search=
method=manual
address1=192.168.1.101/24

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=ignore

@benjamin.l.cole8.civ

  1. Why this is working (it seems more simple than I would have thought based on other posts).

I think the key is options bcmdhd op_mode=2 to create the hotspot.

  1. If there are any potential improvements that could be made.

From my side, It’s total a workable solution, maybe others can share more.

  1. If there are any potential issues with this solution.

Do you ever got issue after several reboot test or disconnect the hotsport during long time runing?

1 Like

@alanz - thanks a ton for the feedback! I am glad to hear that there are no immediate and obvious concerns. I have not done a ton of testing, but I have not really seen any major issues so far and none have been reported by my teammates either. Also of note is that it appears that using a 16 bit netmask in my step 8 above is probably not necessary based on testing.

Also in case this helps anyone who is manually adding these files the permissions need to be 600 (can be set with chmod), and I generated a UUID with dbus-uuidgen and sed, and for the MAC I just did a cat on /sys/class/net/INTERFACE/address