usb虛擬網卡與串口


usb虛擬網卡與串口

依賴的驅動模塊

# usb
cp /work/code/kernel_gitee/kernel_imx/fs/configfs/configfs.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/libcomposite.ko ./fixShell/so/

# 網絡
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/u_ether.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_rndis.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_ecm.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_ncm.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/./legacy/g_ether.ko ./fixShell/so/

# 串口
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/u_serial.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_serial.ko ./fixShell/so/
cp /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/./legacy/g_serial.ko ./fixShell/so/


insmod /work/code/kernel_gitee/kernel_imx/fs/configfs/configfs.ko
insmod /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/libcomposite.ko

insmod /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/u_ether.ko 
insmod /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_rndis.ko 
insmod /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_ecm.ko 
insmod /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_ncm.ko 
insmod /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/./legacy/g_ether.ko 


insmod  /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/u_serial.ko 
insmod  /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_serial.ko 
insmod  /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/./legacy/g_serial.ko use_acm=0

虛擬網卡

https://blog.csdn.net/zhenglie110/article/details/80223167

術語

  • RemoteNDIS

編譯

    這里使用模塊
    Device Drivers —>
        [*] USB support —>
            <*> USB Gadget Support —>
                         Ethernet Gadget (with CDC Ethernet support)
                         [*] RNDIS support

使用

開發板設置

必須確保USB是工作在slave模式的,這個地方6ul的板子控制電平即可

echo 0 > /tmp/gpio/IO_USB0_PWR/value

ifconfig usb0 192.168.77.55 netmask 255.255.255.0
route add default gw 192.168.77.1

HOST設置

# 搜索kindle_rndis.inf_amd64
運行 5-runasadmin_register-CA-cer.cmd
安裝 kindle_rndis.inf
設置主機IP

虛擬串口

參考網址

https://developer.ridgerun.com/wiki/index.php/How_to_use_USB_CDC_ACM_and_MS_composite_Linux_gadget_driver

https://blog.csdn.net/hbcbgcx/article/details/88198771
https://blog.csdn.net/yazhouren/article/details/80196344

使用

開發板

# 這里的use_acm=0 表示的就是從設備
insmod  /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/u_serial.ko 
insmod  /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/function/usb_f_serial.ko 
insmod  /work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/./legacy/g_serial.ko use_acm=0

host

1. 驅動簽名禁止
2. 安裝 linux-cdc-acm.inf 修改uid 設備管理器中查看硬件id
3. 串口打開 這里只能在子系統類的unix下使用 win10

錯誤處理

以下錯誤可能有兩種情況: 1 未設置為從模式 2 不支持同時使用虛擬網卡和虛擬串口

udc-core: couldn't find an available UDC - added [g_serial] to list of pending

調試記錄(驅動依賴)

直接安裝g_ether,提示找不到符號依賴,搜索 usb_get_function_instance,或者更好的是在ubuntu下使用modinfo,然后使用find -name xxx.ko

insmod  g_ether.ko
g_ether: Unknown symbol usb_get_function_instance (err 0)

vmuser@ubuntu:~/work/code/kernel_gitee/kernel_imx/drivers/usb/gadget$ modinfo ./legacy/g_ether.ko
filename:       /home/vmuser/work/code/kernel_gitee/kernel_imx/drivers/usb/gadget/./legacy/g_ether.ko
license:        GPL
author:         David Brownell, Benedikt Spanger
description:    RNDIS/Ethernet Gadget
srcversion:     5E4C828D24F6E477C9CB5EE
depends:        libcomposit

如下搜索

modinfo drivers/usb/gadget/./legacy/g_ether.ko
find -name "configfs.ko"
find -name "libcomposite.ko"
find -name "u_ether.ko"
find -name "usb_f_rndis.ko"
modinfo ./drivers/usb/gadget/function/usb_f_rndis.ko

完整的依賴如下

[root@EPC-M6Y2C kernel_imx]# lsmod
Module                  Size  Used by    Not tainted
g_ether                 5247  0
usb_f_ecm               6843  1
usb_f_rndis            16183  2 g_ether
u_ether                12156  3 g_ether,usb_f_ecm,usb_f_rndis
libcomposite           44608  3 g_ether,usb_f_ecm,usb_f_rndis
configfs               24103  4 usb_f_ecm,usb_f_rndis,libcomposite


然后依賴查找安裝


insmod  ./drivers/usb/gadget/function/u_serial.ko
insmod ./drivers/usb/gadget/function/usb_f_serial.ko
insmod drivers/usb/gadget/./legacy/g_serial.ko


[root@EPC-M6Y2C kernel_imx]# lsmod
Module                  Size  Used by    Not tainted
usb_f_serial            3061  0
u_serial                9720  1 usb_f_serial
g_serial                3693  0
g_ether                 5247  0
usb_f_ecm               6843  1
usb_f_rndis            16183  2 g_ether
u_ether                12156  3 g_ether,usb_f_ecm,usb_f_rndis
libcomposite           44608  5 usb_f_serial,g_serial,g_ether,usb_f_ecm,usb_f_rndis
configfs               24103  5 usb_f_serial,usb_f_ecm,usb_f_rndis,libcomposite



insmod  u_serial.ko
insmod  libcomposite.ko
insmod   usb_f_serial.ko
insmod  usb_f_obex.ko
insmod  usb_f_acm.ko
insmod  g_serial.ko use_acm=0  # 這個是從


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM