jetson xavier nx 开启usb bulk 模式

一、参考资料与信息:

jetson xavier nx使用jetpack sdk 5.0.2,20.04ubantu。

CONFIG_USB_CONFIGFS_F_FS=y(通过 ConfigFS 的 FunctionFS 支持)。在较新的内核版本中,CONFIG_USB_FUNCTIONFS 已被 CONFIG_USB_CONFIGFS_F_FS 替代。

请连接host设备后再启动程序

https://developer.dji.com/doc/payload-sdk-tutorial/cn/basic-introduction/whats-psdk.html

https://sdk-forum.dji.net/hc/zh-cn/articles/38622108040857-Linux%E5%B9%B3%E5%8F%B0%E9%85%8D%E7%BD%AEBULK
 

二、下载安装usb-bulk-configuration

https://terra-1-g.djicdn.com/71a7d383e71a4fb8887a310eb746b47f/psdk/e-port/usb-bulk-configuration-reference.zip

三、配置nx板子原始usb脚本

1. 备份

cd /opt/nvidia/l4t-usb-device-mode/    #usb配置目录

sudo cp nv-l4t-usb-device-mode-start.sh nv-l4t-usb-device-mode-start.sh.bak    #备份

sudo vim  nv-l4t-usb-device-mode-start.sh

 2.修改配置nv-l4t-usb-device-mode-start.sh 

vim /你的目录/to/usb-bulk-configuration/psdk-usb-configure.sh 

#将其中关于usb bulk的代码复制到 /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh中,代码如下:

enable_bulk=1
if [ ${enable_bulk} -eq 1 ]; then
    mkdir -p /dev/usb-ffs
    
    cfg_str="${cfg_str}+BULK1" 
    mkdir -p /dev/usb-ffs/bulk1
    func=functions/ffs.bulk1
    mkdir -p "${func}"
    ln -sf "${func}" "${cfg}"
    mount -o mode=0777 -o uid=2000 -o gid=2000 -t functionfs bulk1 /dev/usb-ffs/bulk1
    /home/dji/Desktop/startup_bulk/startup_bulk /dev/usb-ffs/bulk1 &    #修改为自己的目录
    sleep 3


    cfg_str="${cfg_str}+BULK2" 
    mkdir -p /dev/usb-ffs/bulk2
    func=functions/ffs.bulk2
    mkdir -p "${func}"
    ln -sf "${func}" "${cfg}"
    mount -o mode=0777 -o uid=2000 -o gid=2000 -t functionfs bulk2 /dev/usb-ffs/bulk2
    /home/dji/Desktop/startup_bulk/startup_bulk /dev/usb-ffs/bulk2 &    #修改为自己的目录
    sleep 3
fi

3.修改 nv-l4t-usb-device-mode-config.sh配置

sudo vim /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-config.sh

#添加
enable_bulk=1

四、 开启方法(请事先连接设备)

1.方法一(官方):直接重启

sudo reboot

2. 方法二:在线运行脚本

cd  /opt/nvidia/l4t-usb-device-mode
sudo chmod 777 nv-l4t-usb-device-mode-start.sh

sudo ./nv-l4t-usb-device-mode-start.sh

3.开启成功标志

#查看是否开启,若开启则会显示bulk1和bulk2的信息
ps -aux | grep startup_bulk

#查看端口ep0,ep1,ep2是否正确创建
ls /dev/usb-ffs/bulk*

五、错误解决

1. 写错误!!!

sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh

/opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh: 第 136 行: echo: 写错误: 设备或资源忙

原因:functions/ffs.bulk1 或 functions/ffs.bulk2 目录已存在或被占用

解决:强制清理残留的 USB Gadget 配置,再重新运行

# 1.1在删除配置前,必须先拔出micro-usb,停用 USB Gadget 控制器
sudo sh -c 'echo "" > /sys/kernel/config/usb_gadget/l4t/UDC'

# 1.2解除所有配置的关联
# 遍历所有 configs 目录,删除其中的符号链接
for config in /sys/kernel/config/usb_gadget/l4t/configs/*; do
  sudo find "$config" -type l -exec rm -fv {} \;
done
# 清空 bmAttributes(写入默认值)
sudo sh -c 'echo "0x80" > /sys/kernel/config/usb_gadget/l4t/configs/c.1/bmAttributes'

# 重置 MaxPower
sudo sh -c 'echo "0" > /sys/kernel/config/usb_gadget/l4t/configs/c.1/MaxPower'

# 移除 strings/0x409 子目录
sudo rmdir /sys/kernel/config/usb_gadget/l4t/configs/c.1/strings/0x409

# 删除配置目录
sudo rmdir /sys/kernel/config/usb_gadget/l4t/configs/c.1

# 1.3卸载所有功能模块
# 卸载 ACM (串口调试)
sudo rmdir /sys/kernel/config/usb_gadget/l4t/functions/acm.GS0

# 卸载 Mass Storage (大容量存储)
sudo rmdir /sys/kernel/config/usb_gadget/l4t/functions/mass_storage.0

# 卸载 NCM (网络控制模型)
sudo rmdir /sys/kernel/config/usb_gadget/l4t/functions/ncm.usb0

# 卸载 RNDIS (远程网络驱动接口规范)
sudo rmdir /sys/kernel/config/usb_gadget/l4t/functions/rndis.usb0

# 1.4清理描述信息
sudo rmdir /sys/kernel/config/usb_gadget/l4t/strings/0x409

# 1.5删除 OS 描述符(os_desc)
sudo rmdir /sys/kernel/config/usb_gadget/l4t/os_desc 2>/dev/null

# 1.6删除顶层目录
sudo rmdir /sys/kernel/config/usb_gadget/l4t

 进行挂载操作但未成功的,需要删除相关文件:

sudo umount /dev/usb-ffs/bulk* 2>/dev/null
sudo rm -rf /dev/usb-ffs/bulk*

2.ls: 无法访问 '/dev/usb-ffs/bulk/': 没有那个文件或目录

原因:Bulk 模式未正确启用,配置文件中的 enable_bulk=1 未生效或脚本执行失败

解决:修改 nv-l4t-usb-device-mode-config.sh配置,如上文 三、3内容

3. ffs: -2 

xiao@xiao-desktop:~$ /home/xiao/Public/usbfile/startup_bulk /dev/usb-ffs/bulk1 &

[1] 6462 xiao@xiao-desktop:~$ unable to open ep0 Unable to prepare ffs: -2 

[1]+ 退出 254 /home/xiao/Public/usbfile/startup_bulk /dev/usb-ffs/bulk1

原因:Bulk 模式未正确启用,配置文件中的 enable_bulk=1 未生效或脚本执行失败

解决:修改 nv-l4t-usb-device-mode-config.sh配置,如上文 三、3内容

4.  ffs: -3

xiao@xiao-desktop:~$ sudo /home/xiao/Public/usbfile/startup_bulk /dev/usb-ffs/bulk1

[sudo] xiao 的密码: 

unable do write descriptors Unable to prepare ffs: -3

原因::Jetson 必须通过 OTG 口连接到主机(如 PC)以激活 Gadget 模式

解决:连接host设备

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值