NETGEAR is aware of a growing number of phone and online scams. To learn how to stay safe click here.

Forum Discussion

gbeddow's avatar
gbeddow
Luminary
Feb 19, 2016
Solved

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.
  • 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)
    ...
     

4 Replies

Replies have been turned off for this discussion
  • 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.
    • gbeddow's avatar
      gbeddow
      Luminary
      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)
      ...
       
      • mdgm-ntgr's avatar
        mdgm-ntgr
        NETGEAR Employee Retired

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

NETGEAR Academy

Boost your skills with the Netgear Academy - Get trained, certified and stay ahead with the latest Netgear technology! 

Join Us!

ProSupport for Business

Comprehensive support plans for maximum network uptime and business peace of mind.

 

Learn More