I need to create a internet bonding using two 4g dongle with interface wwan0 and wwan1. I followed many tutorial but nothing helped. So can anyone know how to do it in jetson nano. Because im new to this board. i installed ubuntu os with jetpack using official jetson nano page.
I don’t have experience on 4G dongle. Could you share your current status and what have you tried?
After google search i found that have to recompile the kernel with bonding driver.I followed this one for recompile kernel for bonding driver. so,i followed the link:https://devtalk.nvidia.com/default/topic/1047880/jetson-tx1/mount-network-folder-samba-cifs/post/5322451/#5322451. But , i stuck in “make -j4 O=$TEGRA_KERNEL_OUT Image” command with the below error.
root@jetson5-desktop:/usr/local/src/sources/kernel/kernel-4.9# make -j4 O=$TEGRA_KERNEL_OUT Image
make[1]: Entering directory '/usr/local/src/build'
GEN ./Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/config/kernel.release
GEN ./Makefile
WRAP arch/arm64/include/generated/asm/bugs.h
WRAP arch/arm64/include/generated/asm/clkdev.h
WRAP arch/arm64/include/generated/asm/cputime.h
WRAP arch/arm64/include/generated/asm/delay.h
WRAP arch/arm64/include/generated/asm/dma.h
CHK include/generated/uapi/linux/version.h
WRAP arch/arm64/include/generated/asm/div64.h
WRAP arch/arm64/include/generated/asm/dma-contiguous.h
UPD include/generated/uapi/linux/version.h
WRAP arch/arm64/include/generated/asm/early_ioremap.h
WRAP arch/arm64/include/generated/asm/emergency-restart.h
WRAP arch/arm64/include/generated/asm/errno.h
WRAP arch/arm64/include/generated/asm/hw_irq.h
WRAP arch/arm64/include/generated/asm/ioctl.h
WRAP arch/arm64/include/generated/asm/ioctls.h
WRAP arch/arm64/include/generated/asm/ipcbuf.h
WRAP arch/arm64/include/generated/asm/irq_regs.h
WRAP arch/arm64/include/generated/asm/kmap_types.h
WRAP arch/arm64/include/generated/asm/kvm_para.h
WRAP arch/arm64/include/generated/asm/kdebug.h
WRAP arch/arm64/include/generated/asm/local64.h
WRAP arch/arm64/include/generated/asm/local.h
WRAP arch/arm64/include/generated/asm/mm-arch-hooks.h
WRAP arch/arm64/include/generated/asm/mman.h
WRAP arch/arm64/include/generated/asm/msgbuf.h
WRAP arch/arm64/include/generated/asm/msi.h
WRAP arch/arm64/include/generated/asm/mcs_spinlock.h
HOSTCC scripts/basic/bin2c
WRAP arch/arm64/include/generated/asm/mutex.h
WRAP arch/arm64/include/generated/asm/preempt.h
WRAP arch/arm64/include/generated/asm/resource.h
WRAP arch/arm64/include/generated/asm/rwsem.h
WRAP arch/arm64/include/generated/asm/segment.h
WRAP arch/arm64/include/generated/asm/sembuf.h
WRAP arch/arm64/include/generated/asm/serial.h
WRAP arch/arm64/include/generated/asm/shmbuf.h
WRAP arch/arm64/include/generated/asm/simd.h
WRAP arch/arm64/include/generated/asm/poll.h
WRAP arch/arm64/include/generated/asm/sizes.h
WRAP arch/arm64/include/generated/asm/socket.h
WRAP arch/arm64/include/generated/asm/swab.h
WRAP arch/arm64/include/generated/asm/switch_to.h
WRAP arch/arm64/include/generated/asm/termbits.h
WRAP arch/arm64/include/generated/asm/termios.h
WRAP arch/arm64/include/generated/asm/sockios.h
WRAP arch/arm64/include/generated/asm/trace_clock.h
WRAP arch/arm64/include/generated/asm/unaligned.h
WRAP arch/arm64/include/generated/asm/types.h
WRAP arch/arm64/include/generated/asm/vga.h
WRAP arch/arm64/include/generated/asm/xor.h
WRAP arch/arm64/include/generated/asm/user.h
WRAP arch/arm64/include/generated/uapi/asm/kvm_para.h
HOSTCC scripts/genksyms/genksyms.o
HOSTCC scripts/dtc/dtc.o
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
CC scripts/mod/devicetable-offsets.s
MKELF scripts/mod/elfconfig.h
CHK scripts/mod/devicetable-offsets.h
UPD scripts/mod/devicetable-offsets.h
HOSTCC scripts/dtc/flattree.o
HOSTCC scripts/mod/sumversion.o
UPD include/config/kernel.release
SHIPPED scripts/genksyms/parse.tab.c
HOSTCC scripts/dtc/fstree.o
SHIPPED scripts/genksyms/lex.lex.c
HOSTCC scripts/kallsyms
SHIPPED scripts/genksyms/keywords.hash.c
SHIPPED scripts/genksyms/parse.tab.h
HOSTCC scripts/genksyms/parse.tab.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/dtc/data.o
HOSTCC scripts/genksyms/lex.lex.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/dtc/livetree.o
HOSTCC scripts/dtc/treesource.o
HOSTCC scripts/dtc/srcpos.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/dtc/checks.o
HOSTLD scripts/genksyms/genksyms
HOSTCC scripts/pnmtologo
HOSTCC scripts/conmakehash
HOSTCC scripts/dtc/util.o
Using /usr/local/src/sources/kernel/kernel-4.9 as source for kernel
/usr/local/src/sources/kernel/kernel-4.9 is not clean, please run 'make mrproper'
in the '/usr/local/src/sources/kernel/kernel-4.9' directory.
/usr/local/src/sources/kernel/kernel-4.9/Makefile:1129: recipe for target 'prepare3' failed
make[1]: *** [prepare3] Error 1
make[1]: *** Waiting for unfinished jobs....
SHIPPED scripts/dtc/dtc-lexer.lex.c
SHIPPED scripts/dtc/dtc-parser.tab.h
SHIPPED scripts/dtc/dtc-parser.tab.c
HOSTCC scripts/dtc/dtc-lexer.lex.o
HOSTCC scripts/dtc/dtc-parser.tab.o
HOSTCC scripts/recordmcount
HOSTCC scripts/sortextable
HOSTLD scripts/dtc/dtc
make[1]: *** wait: No child processes. Stop.
Makefile:171: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2
The way to build kernel is in the L4T document. Please refer to L4T document for the steps.
I followed this https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fkernel_custom.html%23wwpID0ESHA l4t documentation.
root@jetson5-desktop:~# cd /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding/
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# ls
Makefile
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# TEGRA_KERNEL_OUT=/lib/modules/4.9.140-tegra/build
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# make ARCH=arm64 -C $TEGRA_KERNEL_OUT M=$(pwd)
make: Entering directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'
LD /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding/built-in.o
Building modules, stage 2.
MODPOST 0 modules
make: Leaving directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# ls
built-in.o Makefile modules.order Module.symvers
Im failed to getting .ko file in this module directory
Did you read “Preparing to Build External Kernel Modules” section?
I followed the tutorial but i had doubt in some lines . so can you guys give a exact steps for building ethernet bonding module driver in jetson
I proceeded from the above section. After i finished with the end command of “make ARCH=arm64 -C $TEGRA_KERNEL_OUT M=$(pwd)” , i didn’t got any error and i got only three files without bonding.ko file.
root@jetson5-desktop:~# cd /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding/
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# ls
Makefile
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# TEGRA_KERNEL_OUT=/lib/modules/4.9.140-tegra/build
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# make ARCH=arm64 -C $TEGRA_KERNEL_OUT M=$(pwd)
make: Entering directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'
LD /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding/built-in.o
Building modules, stage 2.
MODPOST 0 modules
make: Leaving directory '/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9'
root@jetson5-desktop:/usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/drivers/net/bonding# ls
built-in.o Makefile modules.order Module.symvers
It will be great if someone can share the bonding.ko file if you have it prebuilt. I am sure it is going to be easier for the Nvidia devs to give us the bonding.ko file for jetson nano. This has been delaying our software development on the Jetson nano for over two weeks now.
I am confused by your log here.
First, why do you build you source in the header src? There is no kernel source at all. Did you download the source from our download center?
Second, do you enable CONFIG_BONDING in tegra_defconfig?
Thanks to WayneWWW for pointed my mistake. Now bonding module builded successfully.
I followed the below code. It will be helpful for someone who stucked like me.
sudo ./source_sync.sh -k tegra-l4t-r32.1
sudo -s
cd /usr/lib/$(uname -r)/
rm build
ln -s /usr/src/sources/kernel/kernel-4.9/ build
cd /usr/src/sources/kernel/kernel-4.9/
sudo -s
cp /proc/config.gz .
gunzip config.gz
mv config .Config
# Edit and make sure you have CONFIG_LOCALVERSION="-tegra" #(i skipped this one)
make nconfig
make modules_prepare
cd drivers/net/bonding/
make ARCH=arm64 -C /lib/modules/4.9.140-tegra/build M=$(pwd)
exit