评论

22 条评论

  • 您好,是可以的,暂时没有针对此型号编写的教程,您可以先基于nano的步骤来配置环境,理论上差异不大。
    0
    评论操作 固定链接
  • 庞皓源

    好的,理解。

    但是有个细节期望了解一下,以便我们排查开发NX。

    可以回答Nano情况就行。

     

    我想使用 usb bulk方式连接,配置USB的BULK串口之后。如果开发工具没有连接的情况下,能否使用大疆提供的如下检测代码查到内容,内容大概啥样的?我目前总是检测不到,不知道是否需要链接开发套件,但是链接了也没看到,所以想确认一下。

    ps -aux | grep startup_bulk

    参考你们提供的资料

     

    0
    评论操作 固定链接
  • 庞皓源

    补充一下,是不是使用usb bulk之后,可以完全禁用rndis相关?

    0
    评论操作 固定链接
  • 庞皓源

    补充一下,编译网站提供的usb-bulk-configuration-reference时候,报缺少一个方法定义,是不是还需要安装什么lib包?能提供一下吗?

    0
    评论操作 固定链接
  • 您好,配置bulk完成以后,就算不连接硬件,通过ps -aux | grep startup_bulk指令看到的内容是 root 701 0.0 0.0 2024 480 ? S 16:23 0:00 /opt/startup_bulk/build/startup_bulk /dev/usb-ffs/bulk1 root 725 0.0 0.0 2024 460 ? S 16:23 0:00 /opt/startup_bulk/build/startup_bulk /dev/usb-ffs/bulk2 这样的,可以判断bulk节点是否有生成。 >补充一下,是不是使用usb bulk之后,可以完全禁用rndis相关? 是的,这两个是独立的链路。 >reference时候,报缺少一个方法定义,是不是还需要安装什么lib包?能提供一下吗? 这个您可以参考下这篇文章,里面有解决方法的。 https://sdk-forum.dji.net/hc/zh-cn/articles/10232604141465-%E6%A0%91%E8%8E%93%E6%B4%BE4B%E9%85%8D%E7%BD%AEUSB-device-RNDIS-%E5%92%8C-BULK
    0
    评论操作 固定链接
  • 庞皓源

    您好,如下图,情个是启动成功了吧?只是我这看串口时间咋是2016,正常吗?

    目前单独使用uart是成功的,但是usb也插好了,开启了uart and bulk模式还是报错。错误如下,应该从哪些方面排查?

     

    0
    评论操作 固定链接
  • 庞皓源

    补充一下,使用M3T飞机,开发套件按连接说明将网口通讯的typeC口,通过typeC转USB接入NX卡之后,使用lsusb命令看到了增加一个设备,然后查看详情,发现好多个bEndpointAddress地址,懵了,说是要调整hal_usb_bulk.h配置,但不知道我该咋配置了。

    我没理解/dev/usb-ffs/bulk1/ep1、/dev/usb-ffs/bulk1/ep2 和  /dev/usb-ffs/bulk2/ep1 、/dev/usb-ffs/bulk2/ep2 这两套对应什么,什么含义。 

    我计划要获取M3T飞机的摄像头视频图像,我应该配置哪里,这些bEndpointAddress地址分别对应啥,我迷糊了。

     

    具体执行lsusb 查看详情命令结果如下

    indooruav@ubuntu:~$ lsusb -d 2ca3:001f -v

    Bus 001 Device 039: ID 2ca3:001f  
    Couldn't open device, some information will be missing
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.10
      bDeviceClass            0 
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x2ca3 
      idProduct          0x001f 
      bcdDevice            4.09
      iManufacturer           1 
      iProduct                2 
      iSerial                 3 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x00e9
        bNumInterfaces          8
        bConfigurationValue     1
        iConfiguration          4 
        bmAttributes         0x80
          (Bus Powered)
        MaxPower                2mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass        224 Wireless
          bFunctionSubClass       1 Radio Frequency
          bFunctionProtocol       3 RNDIS
          iFunction               7 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass       224 Wireless
          bInterfaceSubClass      1 Radio Frequency
          bInterfaceProtocol      3 RNDIS
          iInterface              5 
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 01
          ** UNRECOGNIZED:  04 24 02 00
          ** UNRECOGNIZED:  05 24 06 00 01
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval               9
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0 
          bInterfaceProtocol      0 
          iInterface              6 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         8 Mass Storage
          bInterfaceSubClass      6 SCSI
          bInterfaceProtocol     80 Bulk-Only
          iInterface              9 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               1
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass     67 
          bInterfaceProtocol      1 
          iInterface             11 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         4
          bInterfaceCount         2
          bFunctionClass          2 Communications
          bFunctionSubClass       2 Abstract (modem)
          bFunctionProtocol       1 AT-commands (v.25ter)
          iFunction              14 
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass      2 Abstract (modem)
          bInterfaceProtocol      1 AT-commands (v.25ter)
          iInterface             12 
          CDC Header:
            bcdCDC               1.10
          CDC Call Management:
            bmCapabilities       0x00
            bDataInterface          5
          CDC ACM:
            bmCapabilities       0x02
              line coding and serial state
          CDC Union:
            bMasterInterface        4
            bSlaveInterface         5 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0 
          bInterfaceProtocol      0 
          iInterface             13 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x04  EP 4 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        6
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass     67 
          bInterfaceProtocol      1 
          iInterface             16 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x05  EP 5 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x87  EP 7 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        7
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass     67 
          bInterfaceProtocol      1 
          iInterface             17 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x06  EP 6 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x88  EP 8 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0

    0
    评论操作 固定链接
  • 庞皓源

    补充,上面这个lsusb看到的信息,是我给开发板USB ID 拨码开关切换至 Device后看到的,如果切成Host,啥也看不到。

    0
    评论操作 固定链接
  • 您好,您方便给我们看下您的硬件连接吗?即lsusb此信息的时候,您板子的连接。 您需要配置的地方是 #define LINUX_USB_BULK1_INTERFACE_NUM (2) #define LINUX_USB_BULK1_END_POINT_IN (0x83) #define LINUX_USB_BULK1_END_POINT_OUT (2) #define LINUX_USB_BULK2_INTERFACE_NUM (3) #define LINUX_USB_BULK2_END_POINT_IN (0x84) #define LINUX_USB_BULK2_END_POINT_OUT (3) 这六个,其中您先找到bulk类型的节点名字,您的lsusb信息中,为bulk类型的是0x88、0x87、0x85、0x84、0x83、0x81 对应的INTERFACE_NUM您可以直接找bInterfaceNumber,比如0x81的是1。END_POINT_OUT可以直接找bEndpointAddress,比如0x81对应的是0x01。这几个节点您都尝试配置到BULK1 BULK2里,看看哪个链路是通的。
    0
    评论操作 固定链接
  • 庞皓源

    之前问题解决,但是碰到新的问题。

    之前问题排查确认是我的载板的那几个USB口是Host模式,且不支持切换Device模式。

    我们更换了TypeC,那个可以直接使用DJI_USE_UART_AND_NETWORK_DEVICE模式,可以看到l4tbr0这个网卡了。

    使用root调用Psdk的Demo已经可以获取到视频流了。

    现在有个问题,我们实际软件运行的账户不是root,所以我们都是用chmod 777 赋权给需要使用的资源的。目前串口赋权了,可以正常范访问,但是这个net网口如何赋权不清楚,用一般用户运行报如下权限错误。

    0
    评论操作 固定链接
  • 庞皓源

    您好,已经解决了,感谢~~

    0
    评论操作 固定链接
  • 您好,好的,您如果后续还有其他问题,欢迎您再次联系留言~
    0
    评论操作 固定链接
  • 萧大淮

    朋友你好,我有个问题想咨询一下,我的jetson xavier nx的micro usb端作为device端,无人机作为host端,如何判断是否已经连接成功?(我的usb bulk和psdk已经配置成功,参考的这篇   https://sdk-forum.dji.net/hc/zh-cn/articles/38037097931929-PSDK%E4%BB%A3%E7%A0%81%E4%B8%AD%E7%9A%84BULK%E8%8A%82%E7%82%B9%E9%85%8D%E7%BD%AE)

    因为我运行 sudo ./dji_sdk_demo_linux
    报错:
    'Logs/latest.log' -> 'DJI_0000_20250317_16-32-38.log'
    [0.012][user]-[Error]-[DjiUser_FillInUserInfo:578) Please fill in correct user information to 'samples/sample_c/platform/linux/manifold2/application/dji_sdk_app_info.h' file. 
    [1.012][user]-[Error]-[main:124) Fill user info error, please check user info config 

    似乎是因为无人机没有被正确识别的原因。

    0
    评论操作 固定链接
  • 庞皓源

    首先,可以肯定你还没走到链路创建识别无人机步骤,仅仅只是在程序认证部分就报错了,原因是你的用户信息异常。因为你贴出信息有限,所以只能给你几个方向去查证。如果无果,建议独立创建帖子咨询大疆。

    1、dji_sdk_app_info.h这个配置文件中是否配置了您自己申请的信息。如果您如实填写了信息,请核实如下几点:

    1)如果你很早申请的用户信息,但是PSDK是最新3.10或3.11版本,则需要重新申请信息,新申请的才支持PSDK高版本密钥识别。

    2)结合机型,确保波特率配置正常,兼容的是460800

     

    2、我留意到你配置文件路径读取的是“samples/sample_c/platform/linux/manifold2/application/dji_sdk_app_info.h”这个路径。这套代码默认是linux标准平台使用的,多用于树莓派等,不是针对NX卡改造后系统的。我不清楚你是否整体改造迁移过相关依赖。但是我建议你使用大疆自带的支持NX 系列jetson 系统的模块。具体见根目录下的CMakeLists.txt,将编译路径指向您想编译的环境地址。包括具体是c还是c++。注意:切换之后,程序将读取该结构下的配置文件,包括dji_sdk_app_info.h等配置信息。

    期望上面能帮助到你。

    0
    评论操作 固定链接
  • 萧大淮

    感谢您的帮助,目前已解决之前的报错。我还想咨询一个问题,uart串口连接是必须的嘛。我只用到了usb bulk功能。如果是必须的,请问您是直接使用的面包线连接e-port和nx板,还是使用了usb转ttl

    0
    评论操作 固定链接
  • 庞皓源

    M4飞机之后,所有大疆飞机要求接入CC芯片,才能完成PSDK注册。目前CC注册完全依赖uart串口,未见大疆提供其他注册模式,所以目前肯定不行。未来是否开放ONLY_BULK 或者ONLY_NET模式,请咨询大疆。

     

    我们根据大疆e-port文档,自己设计制作硬件完成飞机e-port接入我们NX板的,这块你没有可参考性。

    具体参考如下这些资料,完成硬件接入吧。

    0
    评论操作 固定链接
  • joez

    1.我在Orin nano上使用sudo ./startup_bulk /dev/usb-ffs/bulk1 时报错:

    unable to open ep0
    Unable to prepare ffs: -2

    这个怎么解决

    2.我在接线正常的情况下运行sudo ./bin/dji_sdk_demo_on_jetson_cxx ,报错如下,是不是因为第一个问题导致的。

     

    [42.731][linker]-[Error]-[DjiChannel_uartWrite:102) uart write data error 
    [42.731][linker]-[Error]-[DjiLinker_SendMsg:198) write data error 
    [42.731][core]-[Error]-[DjiSdkStatePush_Work:173) Send sdk push state error 

     

    0
    评论操作 固定链接
  • 萧大淮

    第一个报错原因是因为你没能挂载成功bulk,建议你将usb bulk相关的代码(enable bulk =1及其下面一段即可)直接贴进板子usb-start脚本的对应位置,同时,需要在板子的usb-config脚本中贴入(enable bulk =1),然后去除已挂载的信息,再重新挂载

    0
    评论操作 固定链接
  • 庞皓源

    第二个问题:

    是串口读写异常。

    1、检查你串口接线以及波特率配置。

    2、如果是连接了一下又报这个错断开,请检查订阅大疆主题的情况,不要集中注册或发布订阅,容易造成信号阻塞进而产生异常。

     

    0
    评论操作 固定链接
  • joez

    1.我在Orin nano上使用sudo ./startup_bulk /dev/usb-ffs/bulk1 时报错:

    unable to open ep0
    Unable to prepare ffs: -2

    ----------------------------
    我查看源码后发现是教程中的psdk-usb-configure.sh在替换l4t-usb-device-mode-start.sh后不适用的产生的问题,由于我使用的是ORIN NANO,现有的软件版本和之前教程的l4t-usb-device-mode-start.sh已经产生了很多变化。这个psdk-usb-configure.sh修改前的文件可以发一下吗,或者提供一下修改的具体内容,这样可以知道哪些位置做了修改,方便在其他版本上进行修改,不然的话新版的设备难以运行。

    https://developer.dji.com/doc/payload-sdk-tutorial/cn/quick-start/quick-guide/jetson-nano.html

    /* Using PSDK's bulk configuration file */
    sudo cp startup_bulk/psdk-usb-configure.sh  /opt/nvidia/l4t-usb-device-mode-start.sh

     

     

     

    此外,usb bulk的设置不成功会影响UART通讯吗,我使用的是CH340 TTL转USB,是不是这个设备型号的问题。我使用cutecom是测试过是可以正常发送和接收数据的。

    [42.731][linker]-[Error]-[DjiChannel_uartWrite:102) uart write data error 
    [42.731][linker]-[Error]-[DjiLinker_SendMsg:198) write data error 

     

    0
    评论操作 固定链接
  • 萧大淮

    之前可能是我表述不清的原因。不需要将l4t-usb-device-mode-start.sh替换为psdk-usb-configure.sh,请直接在l4t-usb-device-mode-start.sh上进行补充,不需要修改,在enable_ecm配置之后添加:

    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

    此外请在nv-l4t-usb-device-mode-config.sh中,添加:enable_bulk=1,双重保险。

    第二个问题暂时不了解。

     

    0
    评论操作 固定链接
  • 萧大淮

    朋友你好,抱歉又来打扰了,我在c++示例中,无法订阅相机码流(视频框无法跳出),我想请教一下你的nx板子的jetpack版本,opencv版本,ffmpeg版本,和psdk版本。感谢!

    0
    评论操作 固定链接

请先登录再写评论。