tx2 as a wifi hotspot?

Is this possible? Is it practical? :) If so, how is it done?
I might as well make some use of the board’s idle time since it can’t run any of the BOINC projects.

I don’t know how closely the TX1 and TX2 setups are for this, though they are likely very similar…it is likely these URLs will be of interest:
https://devtalk.nvidia.com/default/topic/910608/?comment=4976505
http://elinux.org/Jetson/TX1_WiFi_Access_Point

i think the easy way is to look for raspbeery pi setup
it uses the arm core and ubuntu so many part can be shared

If by “hotspot” you really just mean “router between WiFi and Ethernet,” then pretty much any Linux installation that supports both Ethernet and WiFi can do this.
It’s a little fiddly. The GUI tools to configure WiFi get in the way of the configuration changes needed to turn the WiFi around and use it as an access point, rather than as a client device. However, if you’re reasonably confident in Linux system administration, you’ll probably be able to make it work.

One big caveat: It is possible that the WiFi hardware in the Jetson is somehow crippled so it refuses to work in access point mode. I don’t think that’s very likely, but I have only turned other devices (including Raspberry Pis) into access points, not the Jetson. However, the process only uses stock Linux commands/features, so it really should be possible and “simple” (-ish.)

I went through the process of bringing up an access point on the TX1. There are posts in the TX1 forum with some of that info. I’ll report back when I attempt it on the TX2.

The TX1/2 uses a Broadcom wifi chip similar to the iPhone, so its feature set is limited, but it can work as an AP.

Basic starting points I found through trial and error:

  • use hostapd 2.6 and dnsmasq
  • configure hostapd carefully (only certain wifi channel numbers and features work)
  • disable NetworkManager and bring up interfaces as “manual” in /etc/network/interfaces
  • perform all remaining networking bring-up manually in a script, before and after starting hostapd
  • don’t expect to serve a large number of wifi clients.

Thanks, Gyuhyong. I have plenty of unused RPi’s that I could do that with. I just wanted to get more use out of this $600 device rather than the $35 device.

other than BOINC, I can’t think of any other ways to try to get some more value out of this unit. At least, until it gets put onto a drone (which means buying even MORE hardware at at least $150 MORE.)

/rant/
I gave the TX2 a 4 star rating on Amazon but I am actually very disappointed so far. Everything is so extremely difficult to do for a device touted as using Linux. Yes, it is a purpose built device (as I’m discovering) but the same tasks can be performed and at much higher rates on desktops – except for the drone/robot/mobile arenas but you still have to buy something ELSE to make that happen, even. I did get a realsense R200 to use with this unit but so far have been unsuccessful even in that. And yes, I tried some of the excellent JetsonHacks tools. And, btw, I’ve been using Linux since the early 80’s, and sometimes miss Slackware. :)
/rant off/

Slackware? Pfft! I ran LFS for 10 years!

I think it’s not fair to compare the Jetson TX2 to a consumer-level device, either a graphics card, or a small computer (like a NUC,) or even a mass market embedded device like an Android phone or gaming console.

When there are literally millions of users of the configuration, the vendor will make sure that the support is slick and adapted for ease of use. The investment makes economic sense.
When there are, what, a thousand (totally guessing?) users doing development, and those developers really are developers capable of self service, not end users, then the value equation is totally different.

It wasn’t that long ago that even very simple microcontrollers (like you’d use to drive a power car window motor, for example) would cost hundreds of dollars, and the documentation wouldn’t match the device, and you’d have to pay some other company thousands of dollars to actually get a compiler that worked for the microcontroller.
The Arduino-like enthusiast boards, plus the accessibility of GCC, have really driven costs down for those kinds of boards, but that’s the kind of environment you should compare against, rather than the consumer PC.
Compare to Qualcomm. What does the development/evaluation environment look like for the Snapdragon 835? Can you even get one if you’re not already a billion dollar company? And what kind of compute capability does that really have?
The closest I can come is a third party 820 board, that doesn’t even list a price: https://www.intrinsyc.com/computing-platforms/open-q-820-system-module-som/

Neither Intel nor AMD nor Samsung nor Allwinner nor Broadcom nor Qualcomm can sell you a device capable of running the kind of horsepower math that the Jetson can, in less than 8 Watts. If GPU-compute-power-per-battery-charge is important to you, the Jetson is a great value! If GPU-compute-power-per-weight is important to you, it’s still doing OK. If GPU-compute-when-power-and-weight-is-free is your evaluation criteria, the current Jetson ecosystem is not a good match.

LFS, now THAT is hard-core. Way deeper than I want to go unless I had to.

When I looked at depth cameras, I looked at the Kinect, RealSense and others. My issues with both the Kinect and RealSense was the apparent lack of reasonable support for ARM based linux. Kinect doesn’t appear to have official support from Microsoft for anything but Windows and it seems like they just dropped the ball on SDK support as it comes from third party reverse engineering. And I read somewhere that the RealSense was only supported under Intel architectures but I’m not completely sure, I tried to figure it out recently but didn’t have enough time to figure out everything related to the licenses along with what models are available, which models are discontinued, etc. Intel seemed to say conflicting things on their website.

I ended up using the Orbbec Astra Pro. It has an SDK for ARM64. They didn’t publish that fact properly on their website, they have recently changed that. It works on the TX2 OK, the one issue I had was sync of the depth image and RGB and they appear to have a patch for that if you ask them directly (I haven’t tried it yet, myself). The API for the device is in flux a bit.

The Zen looks nice but it uses a stereo image which has its pluses and minuses (plus is distance, minus is how it handles shadows, etc.). It is a different architecture and quite a bit more expensive than the alternatives but it does seem to have good SDK support although I haven’t used one myself.

I verified that my TX1 access point configuration also works on TX2.

This thread will be useful:

https://devtalk.nvidia.com/default/topic/910608/setting-up-wifi-access-point-on-tx1

For those of you who is looking for a bridging solution.
My working configuration is as follows

  1. echo 2 > /sys/module/bcmdhd/parameters/op_mode OR echo -e “options bcmdhd op_mode=2\n” >> /etc/modprobe.d/bcmdhd.conf

  2. install create_ap script from here https://github.com/oblique/create_ap

  3. prepare network interfaces side
    /etc/network/interfaces:

    source interfaces.d/wlan0
    source interfaces.d/br0

/etc/network/interfaces.d/br0:
auto br0
iface br0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.1
bridge_ports eth0 wlan0

/etc/network/interfaces.d/wlan0:
auto wlan0
iface wlan0 inet manual

  1. If you have DHCP server on your 192.168.100.0/24 LAN do nothing or you should set up your own on TX2:
    /etc/dnsmasq.conf :

    interface=lo,br0
    no-dhcp-interface=lo
    dhcp-range=192.168.100.101,192.168.100.110,255.255.255.0,12h

    and make sure dnsmasq starts when br0 is ready -
    /lib/systemd/system/dnsmasq.service:
    [Unit]
    Description=dnsmasq - A lightweight DHCP and caching DNS server
    Requires=network.target
    After=network-online.target
    Wants=network-online.target

  2. start create_ap as a srevice or manually, something like
    create_ap --no-virt -w 2 -m bridge wlan0 br0 Jetson-TX2

Hi Everyone,

I am trying to setup a wifi hotspot using TX2. I don’t need to bridge connection to ethernet (although that would be a plus). All I want is to create is a local private network between TX2 and my devices.

I was able to follow part of zhirkov’s instruction and get the hotspot up and running using create_ap (https://github.com/oblique/create_ap). However I am unable to get any of my device (Raspberry Pi, Macbook, Android Phones) to connect to it.

Any suggestion would be greatly appreciated! Thank you so much

Hi ddo,

What exactly do you mean by being unable to connect ?
I think that the most probable reason is problem with IP address assignment, not with radio association.
If you don’t need your wifi clients to be on the common network with your eth0@TX2 , you could try
create_ap --no-virt -w 2 -n wlan0 Jetson-TX2
Your clients then will recieve IPs from 192.168.12.0/24 network with TX2 having IP 192.168.12.1 , if I remember right.

Hi zhirkov,

Thank you for your reply. when I try to connect from another device, Jetson seems to just disconnected almost immediately (this is create_ap log)

$ create_ap --no-virt --no-dns -n wlan0 JetsonTX2
Config dir: /tmp/create_ap.wlan0.conf.ljQNjwtS
PID: 3056
Network Manager found, set wlan0 as unmanaged device... DONE
No Internet sharing
hostapd command-line interface: hostapd_cli -p /tmp/create_ap.wlan0.conf.ljQNjwtS/hostapd_ctrl
WARN: Low entropy detected. We recommend you to install `haveged'
Configuration file: /tmp/create_ap.wlan0.conf.ljQNjwtS/hostapd.conf
Using interface wlan0 with hwaddr xx:xx:xx:xx:xx:xx and ssid "JetsonTX2"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED 
wlan0: STA yy:yy:yy:yy:yy:yy IEEE 802.11: associated
wlan0: AP-STA-CONNECTED yy:yy:yy:yy:yy:yy
wlan0: STA yy:yy:yy:yy:yy:yy RADIUS: starting accounting session 5CAF781E-00000000
wlan0: STA yy:yy:yy:yy:yy:yy IEEE 802.11: disassociated
wlan0: AP-STA-DISCONNECTED yy:yy:yy:yy:yy:yy
wlan0: STA yy:yy:yy:yy:yy:yy IEEE 802.11: associated
wlan0: AP-STA-CONNECTED yy:yy:yy:yy:yy:yy

When I connected it with dns (without --no-dns flag), I got this error

$ create_ap --no-virt -n wlan0 JetsonTX2
Config dir: /tmp/create_ap.wlan0.conf.PGMnTRuv
PID: 4268
Network Manager found, set wlan0 as unmanaged device... DONE
No Internet sharing
iptables: No chain/target/match by that name.

Doing cleanup.. done
root@tegra-ubuntu:/home/nvidia#

upon further inspection, it was this line in create_ap that failed

DNS_PORT=5353
GATEWAY=192.168.12.1
iptables -w -t nat -D PREROUTING -s ${GATEWAY%.*}.0/24 -d ${GATEWAY} \
                -p tcp -m tcp --dport 53 -j REDIRECT --to-ports $DNS_PORT

I did some research and it told me that REDIRECT is not usable if you don’t have CONFIG_IP_NF_TARGET_REDIRECT enable in your kernel and I’m not sure how to do that.

Here is my configuration
/etc/modprobe.d/bcmdhd.conf

install bcmdhd test -d /lib/firmware/brcm && /sbin/modprobe --ignore-install bcmdhd
options bcmdhd op_mode=2

/etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

/etc/network/interfaces.d/wlan0

auto wlan0
iface wlan0 inet manual

/etc/dnsmasq.conf

interface=lo,wlan0
no-dhcp-interface=lo
dhcp-range=192.168.12.100,192.168.12.110,255.255.255.0,12h
  1. You are right regarding kernel - rebuild needed for this option to work. I saw (and tried once) great tool for this - https://github.com/jetsonhacks/buildJetsonTX2Kernel .

  2. If you don’t bridging, /etc/dnsmasq.conf doesn’t matter - create_ap will start it. Did you try to start AP with some 8 characters passphrase ?

Hi Zhirkov,

Thank you for your response. This issue has been bothering me for a while now haha.

Yesterday I decided to bring this back to my apartment (as oppose to my office) and the Wifi hotspot works flawlessly. However, with the same configuration, when I bring it to the office, it does not operate.

I have checked the power outlet, the configuration. The only thing I could think of is maybe the amount of wireless access points in my office somehow interfere with the hotspot.

Oh, no … :)

It must be sort of wireless firewall , maybe in a form of “Rogue AP detection and mitigation” feature of many enterprise wireless solutions .
The idea is simple - when rogue AP is detected , managed APs start sending fake diassociation request on behalf of wireless clients connected to that “rogue” AP

You should have been asked for approval from local IT team beforehand :)

Hi zhirkov,

I have contacted my local IT team but the said there is no such firewall on wireless. Is there anyway I can investigate further to know the source of problem? I have tried Wireshark but it can only sniff the connect request from my device and nothing further.