Firefly开源社区

打印 上一主题 下一主题

[Linux] RK3568 USB 以太网(RNDIS)如何启用

67

积分

0

威望

0

贡献

技术小白

积分
67

RK3568 USB 以太网(RNDIS)如何启用

发表于 2022-9-16 12:38:07      浏览:6141 | 回复:17        打印     [复制链接] 楼主
RK3568 USB 以太网(RNDIS)加载模块后不生效(找不到usb0)
EC-A3568J  主机,核心板是 AIO-3568J

首先按照wiki上的文档,进行内核设置:
https://wiki.t-firefly.com/zh_CN ... o_usb_ethernet.html

设置完成后,能正常编译,烧写。烧写完成后,能够按照顺序 insmod 模块。

lsmod 也显示正常,但是找不到usb0,demsg里面也没有检测到接入。
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2022-9-17 13:28:21      沙发
本帖最后由 wx__lQd79k 于 2022-9-17 15:06 编辑
Liuth 发表于 2022-9-16 15:38
内核打开配置CONFIG_USB_CONFIGFS_RNDIS就行,不用模块,build-in就行
板子是Ubuntu系统的话在/etc/init.d ...

/etc/init.d 下找不到 adbd.sh 这个文件

请问使用 ubuntu-base 的话,有哪些脚本文件是需要移植的?
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2022-9-17 13:33:08      板凳
Liuth 发表于 2022-9-16 15:38
内核打开配置CONFIG_USB_CONFIGFS_RNDIS就行,不用模块,build-in就行
板子是Ubuntu系统的话在/etc/init.d ...

加载模块后会显示
[335.039932] udc-core: couldn't find an available UDC - added [g_ether] to list of pending drivers
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2022-9-17 15:06:47      地板
Liuth 发表于 2022-9-17 14:54
你是什么系统 ? Buildroot 吗?

ubuntu-base 20.04.5
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2022-9-17 15:22:22      5#
本帖最后由 wx__lQd79k 于 2022-9-17 15:43 编辑
Liuth 发表于 2022-9-17 14:54
你是什么系统 ? Buildroot 吗?

我尝试使用下载firefly官方的文件系统,版本号为Ubuntu20.04-Minimal_RK3568_v2.11-55_20220427

结果`ifconfig -a` 下还是找不到 usb,说明。

判断脚本已经执行了 ln 的操作,因为软链已经生成了:

  1. root@firefly:/sys/kernel/config/usb_gadget/rockchip/configs/b.1# ll
  2. total 0
  3. drwxrwx--- 3 root root    0 Sep 17 07:40 ./
  4. drwxr-xr-x 3 root root    0 Sep 17 07:37 ../
  5. -rw-r--r-- 1 root root 4096 Sep 17 07:37 MaxPower
  6. -rw-r--r-- 1 root root 4096 Sep 17 07:40 bmAttributes
  7. lrwxrwxrwx 1 root root    0 Sep 17 07:37 rndis.gs0 -> ../../../../usb_gadget/rockchip/functions/rndis.gs0/
  8. drwxr-xr-x 3 root root    0 Sep 17 07:37 strings/
复制代码

但是 usb0 仍然没有显示在 `ifconfig -a` 下。

我的操作如下:

修改 /etc/inid.d/.usb_config:

  1. root@firefly:/etc/init.d# cat .usb_config
  2. usb_rndis_en
复制代码


修改 /etc/init.d/adbd.sh:

[code]root@firefly:/etc/init.d# cat adbd.sh
#!/bin/bash -e
### BEGIN INIT INFO
# Provides:          adbd
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop: 6
# Short-Description:
# Description:       Linux ADB
### END INIT INFO

# setup configfs for adbd, usb mass storage and MTP....

UMS_EN=off
ADB_EN=off
MTP_EN=off
NTB_EN=off
ACM_EN=off
UAC1_EN=off
UAC2_EN=off
UVC_EN=off
RNDIS_EN=on

USB_ATTRIBUTE=0x409
USB_GROUP=rockchip
USB_SKELETON=b.1

CONFIGFS_DIR=/sys/kernel/config
USB_CONFIGFS_DIR=${CONFIGFS_DIR}/usb_gadget/${USB_GROUP}
USB_STRINGS_DIR=${USB_CONFIGFS_DIR}/strings/${USB_ATTRIBUTE}
USB_FUNCTIONS_DIR=${USB_CONFIGFS_DIR}/functions
USB_CONFIGS_DIR=${USB_CONFIGFS_DIR}/configs/${USB_SKELETON}

make_config_string()
{
        tmp=$CONFIG_STRING
        if [ -n "$CONFIG_STRING" ]; then
                CONFIG_STRING=${tmp}_${1}
        else
                CONFIG_STRING=$1
        fi
}

parameter_init()
{
        while read line
        do
                case "$line" in
                        usb_mtp_en)
                                MTP_EN=on
                                make_config_string mtp
                                ;;
                        usb_adb_en)
                                ADB_EN=on
                                make_config_string adb
                                ;;
                        usb_ums_en)
                                UMS_EN=on
                                make_config_string ums
                                ;;
                        usb_ntb_en)
                                NTB_EN=on
                                make_config_string ntb
                                ;;
                        usb_acm_en)
                                ACM_EN=on
                                make_config_string acm
                                ;;
                        usb_uac1_en)
                                UAC1_EN=on
                                make_config_string uac1
                                ;;
                        usb_uac2_en)
                                UAC2_EN=on
                                make_config_string uac2
                                ;;
                        usb_uvc_en)
                                UVC_EN=on
                                make_config_string uvc
                                ;;
                        usb_rndis_en)
                               RNDIS_EN=on
                               make_config_string rndis
                               ;;

                esac
        done < $DIR/.usb_config


        case "$CONFIG_STRING" in
                ums)
                        PID=0x0000
                        ;;
                mtp)
                        PID=0x0001
                        ;;
                adb)
                        PID=0x0006
                        ;;
                mtp_adb | adb_mtp)
                        PID=0x0011
                        ;;
                ums_adb | adb_ums)
                        PID=0x0018
                        ;;
                acm)
                        PID=0x1005
                        ;;
                *)
                        PID=0x0019
        esac
}

configfs_init()
{
        mkdir -p ${USB_CONFIGFS_DIR} -m 0770
        echo 0x2207 > ${USB_CONFIGFS_DIR}/idVendor
        echo $PID > ${USB_CONFIGFS_DIR}/idProduct
        mkdir -p ${USB_STRINGS_DIR}   -m 0770

        SERIAL=`cat /proc/cpuinfo | grep Serial | awk '{print $3}'`
        if [ -z $SERIAL ];then
                SERIAL=0123456789ABCDEF
        fi
        echo $SERIAL > ${USB_STRINGS_DIR}/serialnumber
        echo "rockchip"  > ${USB_STRINGS_DIR}/manufacturer
        echo "rk3xxx"  > ${USB_STRINGS_DIR}/product
        mkdir -p ${USB_CONFIGS_DIR}  -m 0770
        mkdir -p ${USB_CONFIGS_DIR}/strings/${USB_ATTRIBUTE}  -m 0770
        echo 500 > ${USB_CONFIGS_DIR}/MaxPower
        echo ${CONFIG_STRING} > ${USB_CONFIGS_DIR}/strings/${USB_ATTRIBUTE}/configuration

}

configure_uvc_resolution()
{
        mkdir ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H
        echo $UVC_DISPLAY_W > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/wWidth
        echo $UVC_DISPLAY_H > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/wHeight
        echo 666666 > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwDefaultFrameInterval
        echo $((UVC_DISPLAY_W*UVC_DISPLAY_H*80)) > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwMinBitRate
        echo $((UVC_DISPLAY_W*UVC_DISPLAY_H*160)) > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwMaxBitRate
        echo $((UVC_DISPLAY_W*UVC_DISPLAY_H*2)) > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwMaxVideoFrameBufferSize
        echo -e "666666\n1000000\n2000000" > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwFrameInterval
}

function_init()
{
        # UAC must be first setup when multi function composite.
        if [ $UAC1_EN = on ];then
                if [ ! -e "${USB_FUNCTIONS_DIR}/uac1.gs0" ] ;
                then
                        mkdir ${USB_FUNCTIONS_DIR}/uac1.gs0
                        ln -s ${USB_FUNCTIONS_DIR}/uac1.gs0 ${USB_CONFIGS_DIR}/uac1.gs0
                fi
        fi

        if [ $UAC2_EN = on ];then
                if [ ! -e "${USB_FUNCTIONS_DIR}/uac2.gs0" ] ;
                then
                        mkdir ${USB_FUNCTIONS_DIR}/uac2.gs0
                        ln -s ${USB_FUNCTIONS_DIR}/uac2.gs0 ${USB_CONFIGS_DIR}/uac2.gs0
                fi
        fi

        if [ $UMS_EN = on ];then
                if [ ! -e "${USB_FUNCTIONS_DIR}/mass_storage.0" ] ;
                then
                        mkdir -p ${USB_FUNCTIONS_DIR}/mass_storage.0
                        echo /dev/disk/by-partlabel/userdata > ${USB_FUNCTIONS_DIR}/mass_storage.0/lun.0/file
                        ln -s ${USB_FUNCTIONS_DIR}/mass_storage.0 ${USB_CONFIGS_DIR}/mass_storage.0
                fi
        f
回复

使用道具 举报

67

积分

0

威望

0

贡献

技术小白

积分
67
发表于 2023-2-4 09:15:08      6#
じpc 发表于 2022-12-29 09:22
您好,请问,etc/init.d 下找不到 adbd.sh 这个文件,需要移植什么嘛

应该不用这个,你去官方提供的文件系统中翻翻,有几个脚本放过去就行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表