I’m trying to put an extra wifi adaptor to the Jetson Tx1 board. The chip of that USB-wifi adaptor is RTL8188CUS. It works well on raspberry pi so I thought it will also work on Tx1. But I’m wrong. It seems because L4T R23.1 use Linux kernel 3.10.67 and there isn’t any available driver for it.
will install lots of firmware but also doesn’t work :(
So has anyone ever tried an extra wifi adaptor that works? I don’t care to buy another adaptor or if you try some method that works please just tell me. I have been stuck at this driver stuff for a whole week.
I’m not a wireless guy, but there are some details on a JTX1 kernel build which differ somewhat different than the average Linux install (including differences from building for a JTK1, which is what the thread information was based on). Basically until the next L4T release you need two compilers and really must cross-compile to do a correct JTX1 kernel build (kernel is 64-bit, user space is 32-bit…a 64-bit full tool chain and a 32-bit compiler do the job).
This is correct…cross-compile and copy is actually the easiest way to deal with it.
I do not know which USB WiFi devices would be supported out of the box. Many of the common wired devices are already configured…it can be a painful process to research chipsets behind any wireless to find out which driver is required, but that’s basically how it goes. There is some good information here, but often it just means you still need to do some sort of configuration, and some of the data is for Jetson TK1…most drivers working on a JTK1 should work on a JTX1: http://elinux.org/Jetson/Network_Adapters
I do not have an Ubuntu host (I use Fedora), so I use the precompiled binaries from Linaro (or in some cases build tool chains from scratch…a very difficult task). I use the 5.2 release dated 2015.11…if you don’t have the “easier” install of packages directly installable by a package manager, I’d suggest starting here: http://releases.linaro.org/components/toolchain/binaries/5.2-2015.11-2/
I’ll use my system’s install path, for which my 64-bit chain is located at:
Wherever you’ve unpacked the kernel source on your host, this example assumes you already cd’d there, and assumes output directories already exist and are clean and empty:
export CROSS_COMPILE=/usr/local/gcc-linaro-5.2-2015.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
export CROSS32CC=/usr/local/gcc-linaro-5.2-2015.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
export ARCH=arm64
export TEGRA_KERNEL_OUT=${HOME}/Documents/embedded/L4T/kernel_build
export TEGRA_MODULES_OUT=${HOME}/Documents/embedded/L4T/kernel_modules
make O=$TEGRA_KERNEL_OUT tegra21_defconfig
make O=$TEGRA_KERNEL_OUT menuconfig
make O=$TEGRA_KERNEL_OUT zImage
make O=$TEGRA_KERNEL_OUT dtbs
make O=$TEGRA_KERNEL_OUT modules
make O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=$TEGRA_MODULES_OUT
You probably can skip the dtbs step, but it won’t hurt. Be very careful to set the CONFIG_LOCALVERSION (mentioned in the other thread).
Regarding your specific use case, should you be able to compile and build everything just with modules, then you don’t need to install the main kernel Image file, just the modules for that specific addition. Most WiFi also have a firmware package which the package manager may make available via an extra firmware package…if you have to manually install that firmware, then it’ll end up in “/lib/firmware”. The dtbs build output is unlikely to be required unless you are changing pinmux or something which has to be available right as the kernel loads…WiFi drivers mostly only need to load after the kernel is up and running; firmware in “/lib/firmware” gets loaded into the actual device.
Additional note: This u-boot is not set up for decompression of 64-bit systems, so “Image” is used instead of “zImage”…it doesn’t hurt to save both since u-boot may get updates in the future and the file would already be there…but as currently configured you must install the uncompressed “Image” file (in contrast most releases just use zImage and skip Image).