Skip to main content

对接USB摄像头

通过PC共享网络联网(Mac)

本节内容介绍开发者套件连接Mac PC后,通过PC共享外部网络给开发者套件的配置方法(仅支持RJ45网线连接),以实现开发者套件连接外部网络。

开发者套件可以通过使用RJ45网线直连PC,PC共享外部网络给开发者套件的网口来实现开发者套件可以连通外部网络,本方法只适用于192.168.137.x网段,本步骤以eth1网口为例介绍共享网络的步骤(eth1网口也必须为192.168.137.x网段)。

  1. 点击屏幕上方的苹果菜单,选择系统设置。

    图1 打开菜单

    进入“通用 > 共享”界面。 请确保此时mac已经连接网络。

    图2 进入通用设置

    图3 进入共享界面

    在共享菜单中,如果“互联网共享”选项已经打开,请关闭它,后续步骤中会重新开启。

  2. 按下键盘“Command”+“Space”键,输入terminal,打开Macos的终端。

    图4 打开终端

  3. 依次运行以下命令修改网口信息。

    sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkNumberStart 192.168.137.101
    sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkNumberEnd 192.168.137.253
    sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkMask 255.255.255.0

    :::note 说明 如果曾修改过开发者套件的IP地址,则命令中的IP地址的网段需要配置为与修改后的IP地址相同网段, 且不能与开发者套件的ip地址完全相同(即网段相同,但IP最后一部分不能相同)。 :::

  4. 执行命令查看是否修改成功。

    ifconfig | grep 192.168.137

    回显如下:

    inet 192.168.137.101 netmask 0xffffff00 broadcast 192.168.137.255
  5. 返回图3中“共享”菜单页面,打开“互联网共享”选项。

  6. 登录开发者套件,执行以下命令验证是否成功共享网络。

    curl www.baidu.com

    显示以下内容表示开发者套件可连接网络,共享网络成功。

    图5 共享网络成功界面

:::note 说明 配置网络后无法联网请参见正确配置网络后仍无法联网解决。 :::

父主题: 配置网络

通过USB WiFi网卡联网

本章节介绍开发者套件连接USB WiFi模块后,在图形桌面、VNC远程桌面以及命令行的网络配置方法。

使用约束

  • 用户首次完成镜像烧录,第一次启动系统后才插入USB WiFi模块,需要在开发者套件命令行中手动执行命令让WiFi功能生效,该命令在SD卡的使用生命周期内只需要执行一次。

    nmcli radio wifi on

    若首次完成镜像烧录,第一次启动系统前已插入USB WiFi模块,系统会自动执行该命令。

    :::note 说明 Ubuntu系统重启后可能出现WiFi模块指示灯不亮、WiFi功能不生效的情况。请用户再次执行nmcli radio wifi on命令或者将WiFi模块重新插拔即可。 :::

  • 当前支持WiFi芯片型号为RTL8192CU的USB WiFi模块,频率范围2.4GHz,无线速率:300Mbps,购买WiFi模块时请核对参数。

  • 对接路由器或者手机热点时需要匹配频率范围2.4GHz,大部分路由器支持2.4GHz与5GHz双频使用或设置为仅使用2.4GHz频率范围,路由器设置频率范围请参见设置路由器频率范围

图形桌面操作

  • Ubuntu22.04版本镜像为例。

    :::note 说明

    1. 将USB WiFi网卡插入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

    2. 使用本机显示模式登录开发者套件。进入图形化桌面,右键单击下方工具栏中

      按钮,开启WiFi开关,如图1所示。

      图1 开启WiFi

      开启后,出现可连接的WiFi列表,如图2所示,以连接名称为HWtestNet1的WiFi为例。

      图2 WiFi列表

    3. 双击待连接WiFi,弹出密码输入框,输入密码后单击Connect连接WiFi。

      图3 输入密码

      连接完成后下方WiFi图标显示为

      即表示已连接WiFi。

    4. 打开浏览器测试是否已连接网络。

      1. 单击下方

        按钮,打开开始菜单,选择“Internet > Firefox Web Browser”打开浏览器,如图4所示。

        图4 打开浏览器

        :::note 说明 当打开浏览器时出现“Your Computer Clock is Wrong”提示,则需要左键单击左下方工具栏

        打开终端,输入**date -s "YYYY-MM-DD HH:MM:SS"**命令,修改系统时间为当前所在地区时间。 :::

      2. 在浏览器中输入“www.baidu.com”并按下键盘“Enter”键,查看是否成功访问网址。

        图5 输入网址

        若显示以下网页内容,表示开发者套件已成功通过USB WiFi模块连接网络。

        图6 成功访问

  • openEuler22.03版本镜像为例。

    :::note 说明

    1. 将USB WiFi网卡插入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

    2. 使用本机显示模式登录开发者套件。进入图形化桌面,右键单击右上方工具栏

      按钮,开启WiFi开关,如图7所示。

      图7 开启WiFi

      开启后,出现可连接的WiFi列表,如图8所示,以连接名称为HWtestNet1的WiFi为例。

      图8 WiFi列表

    3. 双击待连接WiFi,弹出密码输入框,输入密码后单击Connect连接WiFi。

      图9 输入密码

      连接完成后弹出连接已建立提示框,表示已连接WiFi。

      图10 连接成功

    4. 打开浏览器测试是否已连接网络。

      1. 左键单击正下方工具栏

        按钮打开浏览器。

        :::note 说明 当打开浏览器时出现“Your Computer Clock is Wrong”提示,则需要左键单击正下方工具栏

        打开终端,输入**date -s "YYYY-MM-DD HH:MM:SS"**命令,修改系统时间为当前所在地区时间。 :::

      2. 在浏览器中输入“www.baidu.com”并按下键盘“Enter”键,查看是否成功访问网址。

        图11 输入网址

        若显示以下网页内容,表示开发者套件已成功通过USB WiFi模块连接网络。

        图12 成功访问

VNC桌面操作

  • Ubuntu22.04版本镜像为例。

    :::note 说明

    1. 将USB WiFi网卡插入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

    2. 使用VNC登录方式登录开发者套件。进入VNC桌面,右键单击上方工具栏中

      按钮,开启WiFi开关,如图13所示。

      图13 开启WiFi

      开启后,出现可连接的WiFi列表,如图14所示,以连接名称为HWtestNet1的WiFi为例。

      图14 WiFi列表

    3. 双击待连接WiFi,弹出密码输入框,输入密码后单击Connect连接WiFi。

      图15 输入密码

      连接完成后弹出连接已建立提示框,表示已连接WiFi。

      图16 连接成功

    4. 打开浏览器测试是否已连接网络。

      1. 单击下方工具栏图标打开浏览器。

        :::note 说明 当打开浏览器时出现“Your Computer Clock is Wrong”提示,则需要左键单击左下方工具栏

        打开终端,输入**date -s "YYYY-MM-DD HH:MM:SS"**命令,修改系统时间为当前所在地区时间。 :::

      2. 在浏览器中输入“www.baidu.com”并按下键盘“Enter”键,查看是否成功访问网址。

        图17 输入网址

        若显示以下网页内容,表示开发者套件已成功通过USB WiFi模块连接网络。

        图18 成功访问

  • openEuler22.03版本镜像为例。

    :::note 说明

    1. 将USB WiFi网卡插入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

    2. 使用VNC登录方式登录开发者套件。进入VNC桌面,右键单击右上方工具栏

      按钮,开启WiFi开关,如图19所示。

      图19 开启WiFi

      开启后,出现可连接的WiFi列表,如图20所示,以连接名称为HWtestNet1的WiFi为例。

      图20 WiFi列表

    3. 双击待连接WiFi,弹出密码输入框,输入密码后单击Connect连接WiFi。

      图21 输入密码

      连接完成后弹出连接已建立提示框,表示已连接WiFi。

      图22 连接成功

    4. 打开浏览器测试是否已连接网络。

      1. 左键单击正下方工具栏

        按钮打开浏览器。

        :::note 说明 当打开浏览器时出现“Your Computer Clock is Wrong”提示,则需要左键单击正下方工具栏

        打开终端,输入**date -s "YYYY-MM-DD HH:MM:SS"**命令,修改系统时间为当前所在地区时间。 :::

      2. 在浏览器中输入“www.baidu.com”并按下键盘“Enter”键,查看是否成功访问网址。

        图23 输入网址

        若显示以下网页内容,表示开发者套件已成功通过USB WiFi模块连接网络。

        图24 成功访问

命令行操作

  1. 将USB WiFi网卡插入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

  2. root用户登录开发者套件,执行命令,可以通过回显看到USB WiFi网卡驱动是否正常加载。

    lsmod | grep rtl

    回显如下:

    rtl8192cu 90112 0
    rtl8192c_common 65536 1 rtl8192cu
    rtl_usb 28672 1 rtl8192cu
    rtlwifi 122880 3 rtl8192c_common,rtl_usb,rtl8192cu
    mac80211 839680 3 rtl_usb,rtl8192cu,rtlwifi
    cfg80211 860160 2 rtlwifi,mac80211
  3. 连接WiFi。

    1. 执行命令扫描附近网络,记录待连接WiFi的ssid,此处以HWtestNet1网络为例。

      nmcli dev wifi list

      回显如下:

      IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY
      26:32:30:D6:F8:03 HWtestNet1 Infra 6 130 Mbit/s 100 ▂▄▆█ WPA2
      74:9D:8F:D9:65:18 ChinaNet-wKVF Infra 2 130 Mbit/s 94 ▂▄▆█ WPA1 WPA2
      B8:27:C5:A7:9D:AD -- Infra 1 130 Mbit/s 87 ▂▄▆█ WPA2

      :::note 说明 若此步骤无回显,可能是WiFi设备没有读取成功,请尝试重新上电开发者套件,再执行命令。 :::

    2. 执行命令连接WiFi。

      nmcli dev wifi connect network-ssid password network-password

      network-ssid为待连接的网络名称,如HWtestNet1

      network-password为待连接WiFi网络密码。

      当WiFi名称中包含空格或Linux无法识别的符号时,WiFi名称可使用单引号进行配置,例如:‘HWtestnet1 new’。

      回显如下:

      Device 'wlx08beac3cc4df' successfully activated with '60322d44-xxxx-xxxx-xxxx-cb8b68fbc1c5'.

      :::note 说明 WiFi默认为自动连接模式,重启开发者套件后会自动连接WiFi,用户可执行以下命令查看WiFi连接属性。

      nmcli -f name,autoconnect connection

      回显如下:

      NAME AUTOCONNECT
      HwtestNet1 yes

      Ubuntu系统重启后可能出现WiFi没有自动连接的情况,需要用户再次执行3.b重新连接WiFi。 :::

  4. 执行以下命令查询所连接WiFi为开发者套件分配的IP。

    ifconfig

    回显如下,加粗部分为WiFi为开发者套件分配的IP相关信息:

    wlx08beac3cc4df: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC> mtu 1500
    inet 172.20.10.2 netmask 255.255.255.240 broadcast 172.20.10.15
    inet6 fe80::30fe:1b76:18f1:1c29 prefixlen 64 scopeid 0x20<link>
    ether 08:be:ac:3c:c4:df txqueuelen 1000 (Ethernet)
    RX packets 48 bytes 5780 (5.7 KB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 88 bytes 13276 (13.2 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    其中网络地址为172.20.10.2,广播地址为172.20.10.15。

  5. 开发者套件的默认路由为192.168.137.1,用户需执行以下命令修改默认路由,生效WiFi路由才可连接网络。

    其中路由地址需和所连接网络在同一网段,根据4查询到当前所连接WiFi网络为开发者套件分配的IP为“172.20.10.2”,所以设置路由为“172.20.10.1”。

    route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.20.10.1

    执行命令查看是否添加成功,回显中加粗命令为新增路由信息。

    route -n

    回显如下:

    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 172.20.10.1 0.0.0.0 UG 0 0 0 wlx08beac3cc4df

    :::note 说明 重新插拔USB WiFi网卡或重启开发者套件后,需重新执行此步骤修改路由,若需保留路由请参见FAQ:WiFi模块和其他网络接口同时使用时如何配置开发者套件优先使用WiFi路由。 :::

  6. 执行命令测试网络是否连通。

    curl www.baidu.com

    网络连通成功回显如下:

:::note 说明 配置网络后无法联网请参见正确配置网络后仍无法联网解决。 :::

父主题: 配置网络

通过路由器联网

本文以eth0网口为例,介绍开发者套件通过和直连路由器的获取的外部网络的方法。

配置前提

  • 只有eth0和eth1网口支持连接路由器,且网口的IP模式为DHCP。
  • 在保持开发者套件默认IP配置的情况下,eth0默认为DHCP模式,因此可以直接连接路由器,如果eth1网口要通过路由器连接外部网络,需要先参见修改接口IP地址的方法将网口配置为DHCP模式。

配置开发者套件和路由器直连

准备好已联网的路由器,将PC连接对应的WiFi,同时准备好一根网线,一端连接开发者套件的eth0网口,另一端连接路由器的任意一个LAN口。以下以TP-LINK路由器为例,介绍路由器配置方法。

  1. 在浏览器打开路由器管理页面,在管理页面单击“路由设置”。

  2. 如下图所示,单击“LAN口设置”,“LAN口IP设置”选择“自动(推荐)”,再单击“保存”。

    图1 配置开发者套件和路由器直连界面

  3. 如下图所示,打开“DHCP服务器”,修改DHCP服务器选项为“开”,单击“保存”。开发者套件的IP地址将由路由器进行分配,从下图可以看到地址区间开始地址和结束地址分别为192.168.1.2和192.168.1.254,开发者套件的IP地址可为192.168.1.x,其中x的值在2~254之间。

    图2 配置开发者套件和路由器直连界面

  4. 刷新路由器管理界面,单击“设备管理”,单击匿名主机的“管理”,如下所示,在本示例中,分配给开发者套件的IP地址为192.168.1.107。若没有看到“匿名主机”(开发者套件的连接名称也可能为其它名字),可尝试拔插网线再刷新界面,。

    图3 配置开发者套件和路由器直连界面

  5. 测试PC与开发者套件是否已连通。同时按键盘的“Win”键+“R”键,在运行窗口输入cmd进入命令行窗口,输入命令以下(IP地址按实际情况修改)。

    ping 192.168.1.107

    回显如下说明PC与开发者套件已连通。

    正在 Ping 192.168.1.107 具有 32 字节的数据:
    来自 192.168.1.107 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.1.107 的回复: 字节=32 时间<1ms TTL=64
  6. 使用当前开发者套件IP192.168.1.107远程登录开发者套件,执行以下命令验证是否成功连接外部网络。

    curl www.baidu.com

    显示以下内容表示开发者套件已连接外部网络。

    图4 共享网络成功界面

:::note 说明 配置网络后无法联网请参见正确配置网络后仍无法联网解决。 :::

父主题: 配置网络

对接USB摄像头

开发者套件支持接入UVC协议的USB摄像头,本节介绍如何接入并测试USB摄像头。

  1. 将USB摄像头接入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

  2. root用户登录开发者套件,执行命令,可以通过回显看到通过USB接口接入的摄像头。

    lsusb

    回显如下:

    Bus 005 Device 003: ID 0bda:9143 Realtek Semiconductor Corp. USB Camera
  3. 开发者套件可自动检测USB摄像头接入并创建设备节点“/dev/video0”。用户可通过v4l2命令确认USB摄像头工作是否正常,执行以下命令。

    sudo v4l2-ctl -d /dev/video0 --all

    系统回显如下,包含摄像机帧率、分辨率等信息:

    Driver Info:
    Driver name : uvcvideo
    Card type : USB Camera: USB Camera
    Bus info : usb-a5100000.usb_2-1
    Driver version : 5.10.0
    Capabilities : 0x84a00001
    Video Capture
    Metadata Capture
    Streaming
    Extended Pix Format
    Device Capabilities
    Device Caps : 0x04200001
    Video Capture
    Streaming
    Extended Pix Format
    Media Driver Info:
    Driver name : uvcvideo
    Model : USB Camera: USB Camera
    Serial : 200901010001
    Bus info : usb-a5100000.usb_2-1
    Media version : 5.10.0
    Hardware revision: 0x00002021 (8225)
    Driver version : 5.10.0
    Interface Info:
    ID : 0x03000002
    Type : V4L Video
    Entity Info:
    ID : 0x00000001 (1)
    Name : USB Camera: USB Camera
    Function : V4L2 I/O
    Flags : default
    Pad 0x01000007 : 0: Sink
    Link 0x02000013: from remote pad 0x100000a of entity 'Realtek Extended Controls Unit' (Video Pixel Formatter): Data, Enabled, Immutable
    Priority: 2
    Video input : 0 (Camera 1: ok)
    Format Video Capture:
    Width/Height : 1280/720
    Pixel Format : 'MJPG' (Motion-JPEG)
    Field : None
    Bytes per Line : 0
    Size Image : 1843200
    Colorspace : sRGB
    Transfer Function : Rec. 709
    YCbCr/HSV Encoding: ITU-R 601
    Quantization : Default (maps to Full Range)
    Flags :
    Crop Capability Video Capture:
    Bounds : Left 0, Top 0, Width 1280, Height 720
    Default : Left 0, Top 0, Width 1280, Height 720
    Pixel Aspect: 1/1
    Selection Video Capture: crop_default, Left 0, Top 0, Width 1280, Height 720, Flags:
    Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1280, Height 720, Flags:
    Streaming Parameters Video Capture:
    Capabilities : timeperframe
    Frames per second: 30.000 (30/1)
    Read buffers : 0

命令行

开发者套件支持接入USB音频设备,如麦克风或扬声器并使用命令行进行录音和播放。

:::note 说明 开发者套件默认仅root用户可访问声卡,普通用户若需使用,请通过root用户将普通用户添加到对应用户组,以HwHiAiUser用户为例。

usermod -a -G audio HwHiAiUser

:::

录音设备

  1. 将录音设备接入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

  2. 执行以下命令查询设备ID。

    arecord -l

    回显如下:

    (base) root@davinci-mini:~# arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 0: XFMDPV0018 [XFM-DP-V0.0.18], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    当card为i,device为j时,ID编号表示为”hw:i,j”,如回显所示内容,设备的ID为"hw:0,0"。

  3. 执行以下命令进行录音,使用设备为"hw:0,0",通道数为1,采样率16000,格式S16_LE,录音文件名为test.wav。

    arecord -D hw:0,0 -c 1 -r 16000 -f S16_LE test.wav

    回显如下:

    Recording WAVE 'test.wav' Signed 16 bit Little Endian, Rate 16000 Hz, Mono

    :::note 说明 通道数和采样率视设备而定,常见采样率包括44100、48000、16000,常见通道数为1、2。 :::

  4. 按下键盘“Ctrl”+“C”键停止录音,结束后在当前目录生成录音文件test.wav。

播放设备

  1. 将播放设备接入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。

  2. 执行以下命令查询设备ID。

    aplay -l

    回显如下:

    (base) root@davinci-mini:~# aplay -l
    **** List of CAPTURE Hardware Devices ****
    card 1: Device [USB PnP Audio Device], device 0: USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    当card为i,device为j时,ID编号表示为”hw:i,j”,如回显所示内容,设备的ID为"hw:1,0"。

  3. 执行以下命令进行播放,使用设备为"hw:1,0",录音文件名为test.wav。

    aplay -D plughw:1,0 test.wav

    回显如下:

    Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
  4. 按下键盘“Ctrl”+“C”键停止播放。

父主题: 对接USB音频设备

Python脚本

开发者套件支持接入USB音频设备,如麦克风或扬声器并调用Python脚本进行录音和播放,Python脚本可集成至其他使用USB音频设备的场景,方便用户进行二次开发。

:::note 说明 开发者套件默认仅root用户可访问声卡,普通用户若需使用,请通过root用户将普通用户添加到对应用户组,以HwHiAiUser用户为例。

usermod -a -G audio HwHiAiUser

:::

准备依赖

  • Ubuntu22.04镜像:

    pip3 install sounddevice soundfile
    apt-get install libportaudio2
  • OpenEuler22.03镜像:

    pip3 install sounddevice soundfile
    yum install portaudio portaudio-devel

录音设备样例代码

  1. 编写录音样例代码。

    import sounddevice as sd
    from scipy.io import wavfile

    # 设置录音时长(以秒为单位)
    duration = 5
    # 设置采样率,采样率根据设备而定,常见采样率有44100, 48000,16000等
    sample_rate = 16000
    # 录音设备ID,即对应 arecord -l 回显中每个设备的card编号
    device_index = 0
    # 录音通道数,根据设备而定,常见通道数为1,2
    channels = 1
    # 设置输出音频文件名称
    output_file = "output.wav"

    # 开始录音
    print("Recording started...")
    audio = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=channels, blocking=True, device=device_index)
    print("Recording finished.")

    # 将录音保存为wav格式的文件
    wavfile.write(output_file, sample_rate, audio)
    print("Audio saved to", output_file)
  2. 执行脚本录制音频。

    python3 record.py

    回显如下:

    Recording started...
    Recording finished.
    Audio saved to output.wav

播放设备样例代码

  1. 编写播放音频样例代码。

    import sounddevice as sd
    import soundfile as sf

    # 播放设备ID,即对应 aplay -l 回显中每个设备的card编号
    device_index = 0
    # 设置录音文件路径
    filepath = "output.wav"

    # 读取录音数据和采样率
    data, sample_rate = sf.read(filepath)

    print("Playing recorded audio...")
    sd.play(data, samplerate=sample_rate, blocking=True, device=device_index)
    print("Playback finished.")
  2. 执行脚本播放音频。

    python3 play.py

    回显如下:

    Playing recorded audio...
    Playback finished.

父主题: 对接USB音频设备

对接USB拓展坞

当前开发者套件的USB接口仅支持扩展USB 3.0 Type-A的拓展坞 ,不支持扩展以太网口、HDMI、USB Type-C接口等其他接口。

图1 拓展坞样例图

  1. 将拓展坞接入开发者套件任意一个空闲USB接口(USB 3.0 Type-A)。
  2. 参见对接USB摄像头对接USB音频设备将设备接入USB拓展坞,并验证设备是否可用。

在线提单