Jetson TK1 Wifi / Edimax usb nano

So I bought the Edimax EW-7811Un 150Mbps Wireless 802.11n USB nano adapter because http://elinux.org/Jetson/Network_Adapters said it was tested successfully. I downloaded the driver and copied where instructed but it does not ever load the driver. USB is recognizing it from what I can see from dmesg.

So is anyone getting any wifi to work?

Thanks

Sorry to hear it. Personally I’m not wasting another dime/minute on this TK1 board until a working intel 7260 driver is posted and I can get it online. I was excited about learning cuda parallel programming and doing machine learning algorithms on this board. Now it just collects dust.

I am not entirely sure what ‘the driver’ is good for. It’s basically about downloading the firmware, which is already present in linux-firmware package.

Edimax EW-7811Un 150Mbps Wireless 802.11n USB nano adapter works rock-solid on my Raspberry Pi, but raspbian has the driver built-in. Mine is based on Realtek RTL8188CUS chip.

I have purchased another Wireless USB mini adapter before Edimax, but it was consuming too much power - not suitable for Raspberry Pi, with its limited power budget. It shows up as Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter.

We have a very nice tutorial on how to build kernel modules here. Could it be made sticky?

I’ve built kernel module for RTL8192CU on L4T 19.3 according to the above tutorial’s instructions, but with some deviations.

Wireless is working for me on Jetson TK1 quite well. A very few disconnects, with immediate reconnect. What’s not working, is iwconfig and the others iw*, with exception for iw.

I’ve installed kernel sources, as instructed by Tegra_Linux_Driver_Package_Documents_R19.3.tar. I didn’t manage to use git commands directly, but source_sync.sh -k did the job.

What happened after obtaining the kernel sources is as follows. /home/ubuntu/Downloads is mounted to an SD card. Jetson TK1’s eMMC might not have enough space to play with the kernel/module builds. And yes, Realtek RTL8188CUS and RTL8192CU are being handled by the same piece of code: Device Drivers / Network device support / Wireless LAN:
Realtek wireless card support
Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter

sudo apt-get install libncurses-dev
cd /home/ubuntu/Downloads/19.3/Linux_for_Tegra/sources/kernel_source
export TEGRA_KERNEL_OUT=/home/ubuntu/Downloads/19.3/kernel_build/
mkdir -p $TEGRA_KERNEL_OUT
make O=$TEGRA_KERNEL_OUT prepare
make O=$TEGRA_KERNEL_OUT modules_prepare
make O=$TEGRA_KERNEL_OUT tegra12_defconfig
make O=$TEGRA_KERNEL_OUT menuconfig

 diff -U 0 ~/Downloads/19.3/.config .config
--- /home/ubuntu/Downloads/19.3/.config 2014-07-10 16:15:13.440688219 +0000
+++ .config     2014-07-10 18:58:05.124794574 +0000
@@ -1758 +1758,9 @@
-# CONFIG_RTLWIFI is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTLWIFI_DEBUG is not set
+# CONFIG_RTL8192CE is not set
+# CONFIG_RTL8192SE is not set
+# CONFIG_RTL8192DE is not set
+# CONFIG_RTL8723AE is not set
+# CONFIG_RTL8188EE is not set
+CONFIG_RTL8192CU=m
+CONFIG_RTL8192C_COMMON=m

head Makefile
VERSION = 3
PATCHLEVEL = 10
EXTRAVERSION = -gf455cd4

make O=$TEGRA_KERNEL_OUT zImage
make O=$TEGRA_KERNEL_OUT dtbs

make O=$TEGRA_KERNEL_OUT modules SUBDIRS=net/wireless
make O=$TEGRA_KERNEL_OUT modules SUBDIRS=net/mac80211
make O=$TEGRA_KERNEL_OUT modules SUBDIRS=drivers/net/wireless

WARNING: "ieee80211_rx_irqsafe" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "ieee80211_beacon_get_tim" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "ieee80211_unregister_hw" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "rate_control_send_low" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "freq_reg_info" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!

sudo mkdir -p /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192c
sudo mkdir -p /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192cu
sudo cp $TEGRA_KERNEL_OUT/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192c/
sudo cp $TEGRA_KERNEL_OUT/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192cu/
sudo cp $TEGRA_KERNEL_OUT/drivers/net/wireless/rtlwifi/rtlwifi.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/

sudo apt-get install linux-firmware

sudo vi /etc/default/crda

REGDOMAIN=GB

modinfo rtl8192cu
filename:       /lib/modules/3.10.24-gf455cd4/kernel/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
firmware:       rtlwifi/rtl8192cufw.bin
description:    Realtek 8192C/8188C 802.11n USB wireless
depends:        rtlwifi,rtl8192c-common
vermagic:       3.10.24-gf455cd4 SMP preempt mod_unload ARMv7 p2v8
parm:           swenc:Set to 1 for software crypto (default 0)
 (bool)
parm:           debug:Set debug level (0-5) (default 0) (int)

iwconfig wlan0
wlan0     no wireless extensions.

iw wlan0 info
Interface wlan0
        ifindex 7
        type managed
        wiphy 0

Any wifi progress?

Hello Guys,
I’m new on Jetson, but other I know other e-linux based solutions, don’t give it up! E-linux (on BBB) works with some usb dongles ( I tried TPlink 150mbps), but from console it is not straight forward setup. It takes me always at least 2-3 days to set it up properly.
Second option is to setup connection via some minipci-e card.

I must be doing something basic wrong because it looks like the driver is not attempting to load.

I don’t have a lot of time to mess with it too much at this point.

I am not entirely sure what ‘the driver’ is good for. It’s basically about downloading the firmware, which is already present in linux-firmware package.

Edimax EW-7811Un 150Mbps Wireless 802.11n USB nano adapter works rock-solid on my Raspberry Pi, but raspbian has the driver built-in. Mine is based on Realtek RTL8188CUS chip.

I have purchased another Wireless USB mini adapter before Edimax, but it was consuming too much power - not suitable for Raspberry Pi, with its limited power budget. It shows up as Realtek Semiconductor Corp. RTL8192CU 802.11n WLAN Adapter.

We have a very nice tutorial on how to build kernel modules here. Could it be made sticky?

I’ve built kernel module for RTL8192CU on L4T 19.3 according to the above tutorial’s instructions, but with some deviations.

Wireless is working for me on Jetson TK1 quite well. A very few disconnects, with immediate reconnect. What’s not working, is iwconfig and the others iw*, with exception for iw.

I’ve installed kernel sources, as instructed by Tegra_Linux_Driver_Package_Documents_R19.3.tar. I didn’t manage to use git commands directly, but source_sync.sh -k did the job.

What happened after obtaining the kernel sources is as follows. /home/ubuntu/Downloads is mounted to an SD card. Jetson TK1’s eMMC might not have enough space to play with the kernel/module builds. And yes, Realtek RTL8188CUS and RTL8192CU are being handled by the same piece of code: Device Drivers / Network device support / Wireless LAN:
Realtek wireless card support
Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter

sudo apt-get install libncurses-dev
cd /home/ubuntu/Downloads/19.3/Linux_for_Tegra/sources/kernel_source
export TEGRA_KERNEL_OUT=/home/ubuntu/Downloads/19.3/kernel_build/
mkdir -p $TEGRA_KERNEL_OUT
make O=$TEGRA_KERNEL_OUT prepare
make O=$TEGRA_KERNEL_OUT modules_prepare
make O=$TEGRA_KERNEL_OUT tegra12_defconfig
make O=$TEGRA_KERNEL_OUT menuconfig

 diff -U 0 ~/Downloads/19.3/.config .config
--- /home/ubuntu/Downloads/19.3/.config 2014-07-10 16:15:13.440688219 +0000
+++ .config     2014-07-10 18:58:05.124794574 +0000
@@ -1758 +1758,9 @@
-# CONFIG_RTLWIFI is not set
+CONFIG_RTLWIFI=m
+# CONFIG_RTLWIFI_DEBUG is not set
+# CONFIG_RTL8192CE is not set
+# CONFIG_RTL8192SE is not set
+# CONFIG_RTL8192DE is not set
+# CONFIG_RTL8723AE is not set
+# CONFIG_RTL8188EE is not set
+CONFIG_RTL8192CU=m
+CONFIG_RTL8192C_COMMON=m

head Makefile
VERSION = 3
PATCHLEVEL = 10
EXTRAVERSION = -gf455cd4

make O=$TEGRA_KERNEL_OUT zImage
make O=$TEGRA_KERNEL_OUT dtbs

make O=$TEGRA_KERNEL_OUT modules SUBDIRS=net/wireless
make O=$TEGRA_KERNEL_OUT modules SUBDIRS=net/mac80211
make O=$TEGRA_KERNEL_OUT modules SUBDIRS=drivers/net/wireless

WARNING: "ieee80211_rx_irqsafe" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "ieee80211_beacon_get_tim" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "ieee80211_unregister_hw" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "rate_control_send_low" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!
WARNING: "freq_reg_info" [drivers/net/wireless/rtlwifi/rtlwifi.ko] undefined!

sudo mkdir -p /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192c
sudo mkdir -p /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192cu
sudo cp $TEGRA_KERNEL_OUT/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192c/
sudo cp $TEGRA_KERNEL_OUT/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192cu/
sudo cp $TEGRA_KERNEL_OUT/drivers/net/wireless/rtlwifi/rtlwifi.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/

sudo apt-get install linux-firmware

sudo vi /etc/default/crda

REGDOMAIN=GB

modinfo rtl8192cu
filename:       /lib/modules/3.10.24-gf455cd4/kernel/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
firmware:       rtlwifi/rtl8192cufw.bin
description:    Realtek 8192C/8188C 802.11n USB wireless
depends:        rtlwifi,rtl8192c-common
vermagic:       3.10.24-gf455cd4 SMP preempt mod_unload ARMv7 p2v8
parm:           swenc:Set to 1 for software crypto (default 0)
 (bool)
parm:           debug:Set debug level (0-5) (default 0) (int)

iwconfig wlan0
wlan0     no wireless extensions.

iw wlan0 info
Interface wlan0
        ifindex 7
        type managed
        wiphy 0

Yes I have gotten it to work - you will need to do like above and compile the modules, then you will need to re-flash from a Linux machine with the TK1 connected via the usb.

By works I mean I can connect to a wireless network, but I can’t do any channel scanning or anything fancy. Still not sure why.

Okay, I’ve got to the bottom of the issue. Wireless Extensions aren’t enabled in stock kernel. There is no point to enable them during driver compilation.

The only three things to change in make menuconfig are:

General setup / Local version - append to kernel release
-gf455cd4

Device Drivers / Network device support / Wireless LAN
Realtek wireless card support
Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter

Strangely enough, mac80211.ko and cfg80211.ko are different from the ones in stock kernel. This time I am replacing these two modules too. I know, it’s cheating, because my kernel zImage is different from the stock one.

The result - stable driver for Realtek RTL8188CUS / RTL8192CU chipset, but without support for Wireless Extensions. Please, feel free to give it a try (rtl8192cu.ko.tbz2)!

I am a bit too lazy to re-compile the whole kernel and re-flash it. My field notes are as follows. NB This time the field notes reflect a better order of commands. Please, ignore the previous notes!

PS. The version of the driver included into the stock kernel sources is severely outdated. Raspberry Pi, when it was at kernel version 3.10, was using native Realtek driver v4.0.2_9000 with some patches. Apparently this driver cannot work without Wireless Extensions.

PPS. I wonder if NVIDIA Jetson TK1 developers are reading this forum ;o).

Field notes:

mount
<snip>
/dev/mmcblk1p1 on /home/ubuntu/Downloads type ext4 (rw)


sudo apt-add-repository universe
sudo apt-get update
sudo apt-get autoconf automake libncurses-dev linux-firmware
sudo apt-get upgrade -y

cd ~/Downloads/19.3/
wget https://developer.nvidia.com/sites/default/files/akamai/mobile/files/L4T/kernel_src.tbz2
tar xvf kernel_src.tbz2
cd kernel

export ARCH=arm
make -j4 tegra12_defconfig
make menuconfig

General setup / Local version - append to kernel release
-gf455cd4

Device Drivers / Network device support / Wireless LAN
<M>   Realtek wireless card support
<M>   Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter

zcat /proc/config.gz | diff - .config
35c35
< CONFIG_LOCALVERSION=""
---
> CONFIG_LOCALVERSION="-gf455cd4"
1758c1758,1766
< # CONFIG_RTLWIFI is not set
---
> CONFIG_RTLWIFI=m
> CONFIG_RTLWIFI_DEBUG=y
> # CONFIG_RTL8192CE is not set
> # CONFIG_RTL8192SE is not set
> # CONFIG_RTL8192DE is not set
> # CONFIG_RTL8723AE is not set
> # CONFIG_RTL8188EE is not set
> CONFIG_RTL8192CU=m
> CONFIG_RTL8192C_COMMON=m


make -j4 prepare
make -j4 modules_prepare

make -j4 zImage
make -j4 dtbs

make -j4 modules SUBDIRS=net/wireless
make -j4 modules SUBDIRS=net/mac80211
make -j4 modules SUBDIRS=drivers/net/wireless

sudo mkdir -p /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192c
sudo mkdir -p /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192cu
sudo cp drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192c/
sudo cp drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/rtl8192cu/
sudo cp drivers/net/wireless/rtlwifi/rtlwifi.ko /lib/modules/$(uname -r)/kernel/net/wireless/rtlwifi/
sudo cp /lib/modules/$(uname -r)/kernel/net/mac80211/mac80211.ko /lib/modules/$(uname -r)/kernel/net/mac80211/mac80211.ko.bak
sudo cp /lib/modules/$(uname -r)/kernel/net/wireless/cfg80211.ko /lib/modules/$(uname -r)/kernel/net/wireless/cfg80211.ko.bak
sudo cp kernel/net/mac80211/mac80211.ko /lib/modules/$(uname -r)/kernel/net/mac80211/mac80211.ko
sudo cp kernel/net/wireless/cfg80211.ko /lib/modules/$(uname -r)/kernel/net/wireless/cfg80211.ko
sudo depmod -a

cd ..
tar cvjf rtl8192cu.ko.tbz2 `find kernel -name \*.ko -exec echo -n "{} " \;`
https://onedrive.live.com/redir?resid=977DDFC5316D45E5!2273&authkey=!AKW7mpXmqo2IifM&ithint=file%2ctbz2

modinfo rtl8192cu

filename:       /lib/modules/3.10.24-gf455cd4/kernel/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
firmware:       rtlwifi/rtl8192cufw.bin
description:    Realtek 8192C/8188C 802.11n USB wireless
license:        GPL
author:         Larry Finger    <Larry.Finger@lwfinger.net>
author:         Ziv Huang       <ziv_huang@realtek.com>
author:         Georgia         <georgia@realtek.com>
alias:          usb:v7392p7822d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v2357p0100d*dc*dsc*dp*ic*isc*ip*in*
		<snip>
alias:          usb:v0BDAp8191d*dc*dsc*dp*ic*isc*ip*in*
depends:        rtlwifi,rtl8192c-common
vermagic:       3.10.24-gf455cd4 SMP preempt mod_unload ARMv7 p2v8
parm:           swenc:Set to 1 for software crypto (default 0)
 (bool)
parm:           debug:Set debug level (0-5) (default 0) (int)

sudo modprobe

lsmod
Module                  Size  Used by
rtl8192cu              90651  0
rtlwifi               105007  1 rtl8192cu
mac80211              377460  2 rtlwifi,rtl8192cu
cfg80211              335285  2 mac80211,rtlwifi
rtl8192c_common        53083  1 rtl8192cu
nvhost_vi               2940  0

Got the EDIMAX working too (on 19.3). Used pretty much the same procedure as described…

Currently, the easiest method to use Wifi on Jetson TK1 is to install the user-supplied “Grinch” kernel at https://devtalk.nvidia.com/default/topic/766303/embedded-systems/-customkernel-grinch-19-3-1-for-jetson-tk1/. It has support for many Wifi devices.

As here you have showed the good connection of Edimax usb nano with wifi. For this purpose Edimax drivers help out so well. Here is the best source to download it. Therefore, after coming this post this will be really good one.