差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
digi:arm-embedded:ccmp2:usbwifi [2025/02/26 08:13] robindigi:arm-embedded:ccmp2:usbwifi [2025/03/14 13:29] (当前版本) robin
行 1: 行 1:
 ====USB Wifi 测试==== ====USB Wifi 测试====
 **deyaio-manifest的rtsp分支,用rtsp.xml,使用meta-custom的rtsp分支** **deyaio-manifest的rtsp分支,用rtsp.xml,使用meta-custom的rtsp分支**
-动后,由于移除busybox-httpdsthttpd,所以报错busybox-httpd服务无法启动,未来需要服务改sthttpd+===DEY 5.0 r1 测试=== 
 +刷好固件后,udhcpd和hostapd@wlan1都没运行,需要ifup wlan1后即可,不过固件加载错误的情况,需要手改一下: 
 +<code> 
 +cp cyfmac..trxe cyfmac55500-sdio.digi,ccmp25-dvk.trxse 
 +cp cyfmac..txt cyfmac55500-sdio.digi,ccmp25-dvk.txt 
 +不过,仍只能用默认的规则 
 +</code> 
 + 
 +碰到网络拒绝加入,多等一会儿,让初始化完成即可 
 + 
 +设置摄像头: 
 +<code> 
 +v4l2-ctl --list-devices  #查看设备,一项第一个才是摄像头以 /dev/video2为例,其它设备是硬件codec之类的,也可能未来有用。 
 +v4l2-ctl -d /dev/video2 --list-formats-ext  #查看摄像头支持的输出格式 
 +v4l2-ctl -d /dev/video2 --get-fmt-video  查看当前输出 
 +v4l2-ctl -d /dev/video2 --set-fmt-video=width=1024,height=768,pixelformat=MJPG   #设置输出格式 
 + 
 +gst-launch-1.0 v4l2src device=/dev/video2 ! autovideoconvert ! autovideosink  #注意如果想简单测试一下在显示屏上输出摄像头的视频,可这个但它会占用设备,不可再用web共享,因此为了web共享,用下面这个办法,先创建web的流,再用相同的流本地显示  
 + 
 + 
 +</code> 
 + 
 +通过web或本地显示usb摄像头的视频 
 +<code> 
 +1、创建ip直接访问需页面 
 +echo "<html><body><h1>MJPG Streamer</h1><img src=\"/?action=stream\" /></body></html>" > /srv/mjpg_streamer/www/index.html 
 +2、mjpg_streamer -i "input_uvc.so -d /dev/video2 -r 1024x768 -f 30" -o "output_http.so -p 8080 -w /usr/share/mjpg-streamer/www" 
 +3、本地打开:gst-launch-1.0 -v souphttpsrc location=http://localhost:8080/?action=stream ! jpegdec ! autovideosink 
 +</code> 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +**使用固件20250303** 
 + 
 +这个版本已经集成了udhcpd的相关服务,包括mjpg-streamer和rtsp服务器等软件,并且用sthttpd替代busybox的,以实现更多web功能的支持。默认已经改好/etc/network/interfaces中相关的支持。 
 + 
 +启动有可能需要systemctl restart udhcpd,后续固件更新相关的服务配置,就不需要。 要开启AP,直接ifup wlan1。 另外注意,当前的cypress固件回载出错,不过其应该使用默认的固件,也是可以用来简单测试的,如果要提升性能,可能需要更新无线的固件。 
 + 
 +卡刷这个版本固件, 上电后按任意键停在uboot下 
 +<code> 
 +setenv dey-image-qt 
 +run install_linux_fw_sd 
 +</code> 
 + 
 +测试步骤: 
 +1、修本地显示输出,默认是HDMI接口,如果要改为本地的lvds,开机后按任意键停在uboot下,执行 
 +<code> 
 +setenv overlays _ov_board_g101evn010-lvds_ccmp25-dvk.dtbo 
 +saveenv 
 +reset 
 +</code> 
 + 
 +1、自定义wifi密码: 
 +<code> 
 +nano /etc/hostapd_wlan1.conf  
 +</code> 
 +按需更改热点名称密码,然后重启,名称改为ap-ccmp25,密码改为digidigi  
 +重启,或是得新启动hostapd@wlan1 
 + 
 +2、开启AP, 我们在wlan1中实施,如果有在使用wlan0,请先关闭它。 
 +<code> 
 +#DEY 4.0 r7有bug,为支持ap功能,需修改一下固件名称 
 +cd /lib/firmware/cypress/ 
 +cp cyfmac55500-sdio.trxse cyfmac55500-sdio.digi,ccmp25-dvk.trxse 
 + 
 +#关闭wlan0 ,无所谓要不要这一步 
 +nmcli dev set wlan0 managed no 
 +nmcli dev status 
 +#启用 
 +systemctl enable hostapd@wlan1.service 
 + 
 +ifup wlan1 
 +systemctl status udhcpd 
 +systemctl restart udhcpd #根据固件版本看是否要重启这个服务 
 +systemctl restart hostapd@wlan1.service 
 + 
 +</code> 
 + 
 +Connectcore的AP默认IP地址为:192.168.46.30,客户端接入后会分配到相同网段的IP,并且可以访问http://192.168.42.3 
 + 
 +3、配置usb摄像头的默认输出: 
 + 
 +查看摄像头支持的格式,用 
 +<code> 
 +v4l2-ctl --list-formats-ext -d /dev/video2 
 +</code> 
 +查看摄像头的默认输出格式,用 
 +<code> 
 +v4l2-ctl -d /dev/video2 --get-fmt-video 
 +</code> 
 +设置摄像头的格式,可以用下面命令,注意你要设置硬件所支持的范围 
 +<code> 
 +v4l2-ctl -d /dev/video2 --set-fmt-video=width=640,height=480,pixelformat=YUYV 
 +</code> 
 + 
 + 
 +export LD_LIBRARY_PATH=/usr/lib/mjpg-streamer 
 + 
 +mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1024x768 -f 30" -o "output_http.so -p 8080 -w ./www" 
 + 
 +===sthttpd 配合gstreamer==== 
 +nano /etc/thttpd.conf 
 +<code> 
 +dir=/srv/www 
 +cgipat=/cgi-bin/
 +user=root 
 +</code> 
 +nano /srv/www/cgi-bin/stream 
 +<code> 
 +#!/bin/sh 
 +# 手动设置 HTTP 头(关键:指定 M-JPEG 格式) 
 +echo -e "HTTP/1.1 200 OK\r\nContent-Type: multipart/x-mixed-replace; boundary=frame\r\n\r\n" 
 + 
 +# 直接输出摄像头 MJPG 流(无需编码) 
 +gst-launch-1.0 -q v4l2src device=/dev/video0 ! \ 
 +  image/jpeg,width=1280,height=720,framerate=30/1 ! \ 
 +  multipartmux boundary=frame ! \ 
 +  fdsink fd=1 
 +</code> 
 +chmod +x /srv/www/cgi-bin/stream 
 + 
 +注意,如果要同时本地输出,用这个版本: 
 +<code> 
 +#!/bin/sh 
 +# 设置 HTTP 头 
 +echo -e "HTTP/1.1 200 OK\r\nContent-Type: multipart/x-mixed-replace; boundary=frame\r\n\r\n" 
 + 
 +# 启动 GStreamer 管道(同时输出到 HTTP 和本地屏幕) 
 +gst-launch-1.0 -q \ 
 +  v4l2src device=/dev/video0 ! \ 
 +  image/jpeg,width=1024,height=768,framerate=30/1 ! \ 
 +  tee name=t \ 
 +    # 分支 1:HTTP 流输出(保持现有逻辑) 
 +    t. ! queue ! multipartmux boundary=frame ! fdsink fd=1 \ 
 +    # 分支 2:本地显示(解码 MJPG 后渲染) 
 +    t. ! queue ! jpegdec ! videoconvert ! autovideosink sync=false 
 + 
 +</code> 
 + 
 +编辑 /lib/systemd/system/thttpd.service,确保启动命令正确, 
 +ExecStart=/usr/sbin/thttpd -C /etc/thttpd.conf -c cgi-bin/* -i /var/run/thttpd.pid 
 +临时调试时可用下面 
 +ExecStart=/usr/sbin/thttpd -C /etc/thttpd.conf -D -i /var/run/thttpd.pid 
 + 
 +systemctl daemon-reload 
 + 
 +systemctl restart thttpd 
 + 
 + 
 + 
 + 
 + 
 + 
 +旧的资料,在下面 
 + 
 +检查wifi的功能: 
 +<code> 
 +iw reg get 
 +没设置时,创建nano /etc/systemd/system/set-regdomain.service 
 +另外,wlan1是用来设置ap的,创建 
 +nano /etc/udhcpd.conf 
 + 
 +interface       wlan1 
 +start           192.168.46.100 
 +end             192.168.46.200 
 +max_leases      10 
 +opt router      192.168.46.30 
 +opt lease       86400 
 + 
 +nano /etc/systemd/system/udhcpd.service 
 + 
 +[Unit] 
 +Description=DHCP Server 
 +After=network-online.target hostapd@wlan1.service 
 +Wants=network-online.target 
 + 
 +[Service] 
 +ExecStart=/usr/sbin/udhcpd -f /etc/udhcpd.conf 
 +Restart=on-failure 
 +RestartSec=5s 
 +StartLimitInterval=0 
 + 
 +[Install] 
 +WantedBy=multi-user.target 
 + 
 + 
 + 
 +</code> 
 + 
 +修改/etc/network/interfaces 
 +<code> 
 +auto wlan1 
 +iface wlan1 inet static 
 +        address 192.168.46.30 
 +        netmask 255.255.255.0 
 +        pre-up [ -d /proc/device-tree/wireless ] 
 +        post-up systemctl start hostapd@wlan1.service 
 +        post-up udhcpd /etc/udhcpd.conf 
 +        pre-down systemctl stop hostapd@wlan1.service 
 +        pre-down pkill udhcpd 
 + 
 +</code> 
 +固件加载错误时,查日志,改名 
 + 
 +cp cyfmac55500-sdio.trxse cypress/cyfmac55500-sdio.digi,ccmp25-dvk.trxse 
  
  
行 52: 行 263:
 <code> <code>
 v4l2-ctl -d /dev/video2 --set-fmt-video=width=640,height=480,pixelformat=YUYV v4l2-ctl -d /dev/video2 --set-fmt-video=width=640,height=480,pixelformat=YUYV
 +</code>
 +
 +手动测试:
 +
 +<code>
 +pkill hostapd
 +pkill udhcpd
 +ip link set wlan1 down
 +ip link set wlan1 up
 +
 +hostapd -B /etc/hostapd_wlan1.conf
 +udhcpd -f -v /etc/udhcpd.conf
 </code> </code>