× NETGEAR will be terminating ReadyCLOUD service by July 1st, 2023. For more details click here.
Orbi WiFi 7 RBE973
Reply

build external kernel moduel?

gbeddow
Luminary

build external kernel moduel?

I'm looking for help with building an external kernel module - both in general and, in particular, for the AX88179 USB to Ethernet adapter - with ReadyNAS 6.4.2 on an RN202.
 
Here's a condensed version of what I've tried:
 
 
# cd /home/gbeddow

# mkdir linux_src

# cd linux_src

# wget http://www.downloads.netgear.com/files/GPL/ReadyNASOS_V6.4.2_WW_src.zip

# unzip ReadyNASOS_V6.4.2_WW_src.zip

# ls -al /home/gbeddow/linux_src
...
drwxr-xr-x 1 root    root         412 Feb 18 17:27 buildroot-2015.02
...

# cd /home/gbeddow/linux_src/buildroot-2015.02

# make menuconfig
(SET CONFIG OPTIONS)

# make
(FINISHED BUILDING KERNEL ABOUT 1 HOUR 50 MINUTES LATER)

# uname -r
4.1.16.alpine.1

# ls -al /lib/modules
...
drwxr-xr-x  3 root root 4096 Feb 17 17:51 4.1.16.alpine.1
...

# ln -s /home/gbeddow/linux_src/buildroot-2015.02 /lib/modules/4.1.16.alpine.1/build

# mkdir /home/gbeddow/jue130

# cd /home/gbeddow/jue130

# wget http://www.j5create.com/download_new/driver/jue130_jue135_jue220_jue230_juh470_jce131_jch471_v1.9.0_linux/j5Usb3.0EthernetAdapter-v1.9.0-linux.tar.bz2.zip

# unzip j5Usb3.0EthernetAdapter-v1.9.0-linux.tar.bz2.zip

# tar xvfj j5Usb3.0EthernetAdapter-v1.9.0-linux.tar.bz2

# cd /home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/

# make
make -C /lib/modules/4.1.16.alpine.1/build SUBDIRS=/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE modules
make[1]: Entering directory `/home/gbeddow/linux_src/buildroot-2015.02'
make[1]: *** No rule to make target `modules'.  Stop.
make[1]: Leaving directory `/home/gbeddow/linux_src/buildroot-2015.02'
make: *** [default] Error 2

# cd /home/gbeddow/linux_src/buildroot-2015.02

# make modules
make: *** No rule to make target `modules'.  Stop.
 
Am I using the wrong kernel Makefile or something? Has anyone been able to build ANY external modules with recent versions of ReadyNAS OS on the RN202 or similar?
 
Thanks.
Model: RN20222D|ReadyNAS202 2-Bay 2x2TB Desktop Drive
Message 1 of 5

Accepted Solutions
gbeddow
Luminary

Re: build external kernel module?

Found a solution.
 
Turns out ReadyNAS 6.4.2 for the RN202 already includes the driver (external module) for the AX88179 USB to Ethernet adapter (also sold by j5create as the JUE130), but out of the box the kernel needs to be configured for it:
 
# cd /home/gbeddow/linux_src/linux-4.1.16-alpine

# make menuconfig

Device/Drivers -> Network Device Support -> USB Network Adapters (press "M" to enable as module)

(EXIT AND SAVE CONFIG)

# make
...
  CC      drivers/net/usb/ax88179_178a.mod.o
  LD [M]  drivers/net/usb/ax88179_178a.ko
...

# mkdir /lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb

(COPY THE MODULE AND ITS DEPENDENCIES SO MODPROBE CAN FIND THEM:)

# cp /home/gbeddow/linux_src/linux-4.1.16-alpine/drivers/net/usb/ax88179_178a.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/ax88179_178a.ko

# cp /home/gbeddow/linux_src/linux-4.1.16-alpine/drivers/net/usb/usbnet.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/usbnet.ko

# cp /home/gbeddow/linux_src/linux-4.1.16-alpine/drivers/net/mii.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/net/mii.ko

(ADD TO MODULES.DEP:)

# vi /lib/modules/4.1.16.alpine.1/modules.dep
/lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/ax88179_178a.ko:
/lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/usbnet.ko:
/lib/modules/4.1.16.alpine.1/kernel/drivers/net/mii.ko:

# modprobe mii

# modprobe usbnet

# modprobe ax88179_178a

# dmesg
...
ax88179_178a 2-2:1.0 eth2: register 'ax88179_178a' at usb-0002:01:00.0-2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:05:1b:b0:42:82
usbcore: registered new interface driver ax88179_178a

# ifconfig eth2 up

# ifconfig
...

eth2      Link encap:Ethernet  HWaddr 00:05:1b:b0:42:82
          inet6 addr: fe80::205:1bff:feb0:4282/64 Scope:Link
          inet6 addr: 2601:643:c080:92:205:1bff:feb0:4282/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:182 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:63762 (62.2 KiB)  TX bytes:12027 (11.7 KiB)
...
 

View solution in original post

Message 3 of 5

All Replies
gbeddow
Luminary

Re: build external kernel moduel?

Haven't heard back from anyone on this, but meanwhile I found I needed to be working with the "linux-4.1.16-alpine" directory, not the "buildroot-2015.02" directory. The Makefile in the former actually has a target for "modules".
 
So... with a minor change to the Makefile the driver (module) now builds (with warnings) - but it doesn't install:
 
# cd /home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/

# make
make -C /lib/modules/4.1.16.alpine.1/build SUBDIRS=/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE modules
make[1]: Entering directory `/home/gbeddow/linux_src/linux-4.1.16-alpine'
  CC [M]  /home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.o
/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.c:55:6: warning: macro "__TIME__" might prevent reproducible builds [-Wdate-time]
  " " __TIME__ " " __DATE__ "\n"
      ^
/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.c:55:19: warning: macro "__DATE__" might prevent reproducible builds [-Wdate-time]
  " " __TIME__ " " __DATE__ "\n"
                   ^
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: "usbnet_disconnect" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_probe" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_set_msglevel" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_get_msglevel" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_tx_timeout" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_start_xmit" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_stop" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_open" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_write_cmd_async" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_get_endpoints" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "mii_nway_restart" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_defer_kevent" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_suspend" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_resume" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "mii_check_media" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_write_cmd" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_write_cmd_nopm" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_read_cmd" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_read_cmd_nopm" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "generic_mii_ioctl" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "mii_ethtool_gset" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "mii_ethtool_sset" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_get_drvinfo" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
WARNING: "usbnet_skb_return" [/home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko] undefined!
  CC      /home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.mod.o
  LD [M]  /home/gbeddow/jue130/AX88179_178A_LINUX_DRIVER_v1.9.0_SOURCE/ax88179_178a.ko
make[1]: Leaving directory `/home/gbeddow/linux_src/linux-4.1.16-alpine'

# make install
su -c "cp -v ax88179_178a.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/usb/net && /sbin/depmod -a"
`ax88179_178a.ko' -> `/lib/modules/4.1.16.alpine.1/kernel/drivers/usb/net'
cp: cannot create regular file `/lib/modules/4.1.16.alpine.1/kernel/drivers/usb/net': No such file or directory
make: *** [install] Error 1

# ls -al /lib/modules/4.1.16.alpine.1/kernel/drivers
total 12
drwxr-xr-x 3 root root 4096 Feb 17 17:51 .
drwxr-xr-x 5 root root 4096 Feb 17 17:51 ..
drwxr-xr-x 2 root root 4096 Feb 17 17:51 net

# mkdir /lib/modules/4.1.16.alpine.1/kernel/drivers/usb
# mkdir /lib/modules/4.1.16.alpine.1/kernel/drivers/usb/net

# make install
su -c "cp -v ax88179_178a.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/usb/net && /sbin/depmod -a"
`ax88179_178a.ko' -> `/lib/modules/4.1.16.alpine.1/kernel/drivers/usb/net/ax88179_178a.ko'
And poking around a bit, I see this:
 
# modprobe usbnet
modprobe: module usbnet not found in modules.dep

# find / -name 'usbnet*' -print
(NO "usbnet.ko" OR SIMILAR)

# lsmod
Module                  Size  Used by    Tainted: P
vpd                     9360  0
(NO OTHER MODULES)

# insmod ax88179_178a.ko
insmod: can't insert 'ax88179_178a.ko': unknown symbol in module, or unknown parameter

# modinfo ax88179_178a
filename:       kernel/drivers/usb/net/ax88179_178a.ko
license:        GPL
author:         David Hollis
description:    ASIX AX88179_178A based USB 2.0/3.0 Gigabit Ethernet Devices
alias:          usb:v04E8pA100d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v17EFp304Bd*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0B95p178Ad*dc*dsc*dp*ic*isc*ip*in*
depends:
vermagic:       4.1.16.alpine.1 SMP mod_unload modversions ARMv7 p2v8
parm:           ifg:RX Bulk IN Inter Frame Gap
parm:           bsize:RX Bulk IN Queue Size
parm:           msg_enable:usbnet msg_enable
Of course my preference all along has been to install the module (driver) for this device without deploying a new kernel. But it looks like the usbnet module is missing from the kernel, and it's apparently needed, so not sure if that's gonna be possible.
 
Can anyone advise?
 
Thanks.
Message 2 of 5
gbeddow
Luminary

Re: build external kernel module?

Found a solution.
 
Turns out ReadyNAS 6.4.2 for the RN202 already includes the driver (external module) for the AX88179 USB to Ethernet adapter (also sold by j5create as the JUE130), but out of the box the kernel needs to be configured for it:
 
# cd /home/gbeddow/linux_src/linux-4.1.16-alpine

# make menuconfig

Device/Drivers -> Network Device Support -> USB Network Adapters (press "M" to enable as module)

(EXIT AND SAVE CONFIG)

# make
...
  CC      drivers/net/usb/ax88179_178a.mod.o
  LD [M]  drivers/net/usb/ax88179_178a.ko
...

# mkdir /lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb

(COPY THE MODULE AND ITS DEPENDENCIES SO MODPROBE CAN FIND THEM:)

# cp /home/gbeddow/linux_src/linux-4.1.16-alpine/drivers/net/usb/ax88179_178a.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/ax88179_178a.ko

# cp /home/gbeddow/linux_src/linux-4.1.16-alpine/drivers/net/usb/usbnet.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/usbnet.ko

# cp /home/gbeddow/linux_src/linux-4.1.16-alpine/drivers/net/mii.ko /lib/modules/4.1.16.alpine.1/kernel/drivers/net/mii.ko

(ADD TO MODULES.DEP:)

# vi /lib/modules/4.1.16.alpine.1/modules.dep
/lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/ax88179_178a.ko:
/lib/modules/4.1.16.alpine.1/kernel/drivers/net/usb/usbnet.ko:
/lib/modules/4.1.16.alpine.1/kernel/drivers/net/mii.ko:

# modprobe mii

# modprobe usbnet

# modprobe ax88179_178a

# dmesg
...
ax88179_178a 2-2:1.0 eth2: register 'ax88179_178a' at usb-0002:01:00.0-2, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:05:1b:b0:42:82
usbcore: registered new interface driver ax88179_178a

# ifconfig eth2 up

# ifconfig
...

eth2      Link encap:Ethernet  HWaddr 00:05:1b:b0:42:82
          inet6 addr: fe80::205:1bff:feb0:4282/64 Scope:Link
          inet6 addr: 2601:643:c080:92:205:1bff:feb0:4282/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:182 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:63762 (62.2 KiB)  TX bytes:12027 (11.7 KiB)
...
 
Message 3 of 5
mdgm-ntgr
NETGEAR Employee Retired

Re: build external kernel module?

Thanks for sharing your solution. Not sure why you need 3 ethernet connections to the NAS though.

Message 4 of 5
gbeddow
Luminary

Re: build external kernel module?

Investigating Intrusion Detection & Prevention Systems. Only 2 ethernet connections needed for Detection (typical Snort configuration), but 3 (or more) needed for Prevention.

Message 5 of 5
Top Contributors
Discussion stats
  • 4 replies
  • 6747 views
  • 0 kudos
  • 2 in conversation
Announcements