路由器硬改+刷OpenWrt+挂载摄像头+U盘
硬件改造
- 根据型号查找推荐的 DDR 内存和闪存
https://oldwiki.archive.openwrt.org/toh/tp-link/tl-wr703n - 用拖焊法换 Flash 和 Ram 以及外置天线(注意检查有无短路和断路)
- 完善 USB 外围电路
- 引出串口接线端子
刷入引导加载器和固件
- 下载对应主控型号的breed和openwrt 固件
- 用编程器备份原厂固件
- 用编程器刷入 breed
- 通过 breed 控制台编程器固件更新刷入原厂固件,固件更新时勾选保留现有 Bootloader,取消勾选保留现有 ART,固件更新成功后即可恢复原厂 ART(无线校准信息),备份 ART
- 通过 breed 控制台常规固件更新刷入 openwrt 固件
安装相关驱动和软件
-
连接 USB 转串口与路由器串口之间的导线
-
使用 SecureCRTPortable 连接对应串口,取消流控下的勾选
-
连接成功后执行以下命令
opkg update opkg install luci-base luci luci-i18n-base-zh-cn opkg install kmod-usb-core kmod-usb-ohci kmod-scsi-core kmod-usb2 opkg install kmod-usb-video kmod-video-core opkg install kmod-video-uvc kmod-video-gspca-core kmod-video-gspca-zc3xx opkg install kmod-i2c-core kmod-input-core opkg install mjpg-streamer luci-app-mjpg-streamer luci-i18n-mjpg-streamer-zh-cn opkg install blkid usbutils libusb opkg install openssh-sftp-serve opkg install kmod-usb-storage kmod-usb-storage-extras block-mount kmod-fs-ntfs opkg install ntfs-3g kmod-fuse
luci-base 用于提供图形界面
openssh-sftp-serve 用于传输文件,可通过此方式访问设备文件系统,直接修改配置 -
启用系统->管理权下的SSH 访问
安装摄像头驱动
-
lsusb
命令用于显示连接到系统的 USB 总线信息,执行 lsusb 命令获取设备的生产商和设备名以及设备 ID,查找对应驱动root@LEDE:~# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 046d:08af Logitech, Inc. QuickCam Easy/Cool
Bus 001 : 设备连接到第 1 条总线;
Device 002 : 第 2 台连接到总线上的设备;
ID 046d:08af : 设备的 ID 为 046d:08af;
Logitech, Inc. QuickCam Easy/Cool :生产商名为罗技,设备名为快看畅想 -
如果设备不支持 UVC 免驱,安装对应驱动(gspca 系列)
-
通过串口执行 dmesg 命令
dmesg | grep video
,检查驱动安装是否成功root@LEDE:~# dmesg | grep video [ 10.392647] Linux video capture interface: v2.00 [ 10.724687] usbcore: registered new interface driver uvcvideo
-
执行
ls /dev/
,如果存在video0
或者video1
、video2
设备名称,说明已经正确识别
启动设备
- 进入luci 界面->服务 serivices->mjpg-streamer
- 勾选Enable MJPG-streamer,Input plugin选择UVC,Output plugin选择HTTP
- UVC input下的设备选择识别到的设备名video0,设置分辨率和 fps,是否支持 YUYV 格式取决于设备
- HTTP output下的端口和WWW folder保持默认值,也可自定义
- 点击保存应用,看到后台有mjpg-streamer进程说明启动成功
配置设备
-
获取设备具体型号
- 通过外观获取型号
- 通过网络获取型号(官网、中关村在线、淘宝拍立淘、以图识图等)
- 通过命令获取型号
-
获取设备具体型号和参数
-
将摄像头连接到电脑,进入 ubuntu 系统
-
安装视频和摄像头软件 v4l-utils(luvcview,spcaview,webcam,xawtv)
-
执行以下命令可获得设备分辨率、帧率等信息
sudo apt-get install v4l-utils v4l2-ctl -d /dev/video0 --all
-
-
获取到的分辨率、帧率等信息如下
-
根据相关参数设置相关配置
-
点击应用并保存,设置界面出现图片,打开
http://网关ip:8080
,画面出现
-
修改相关配置,设置 openwrt 摄像头自启动
/etc/init.d/mjpg-streamer enable //设置开机自动启动 /etc/init.d/mjpg-streamer disable //禁止开机自动启动 /etc/init.d/mjpg-streamer start //现在启动 /etc/init.d/mjpg-streamer restart //重启 /etc/init.d/mjpg-streamer stop //停止
注意事项
- 资源占用高,CPU 长期 100%以上,内存占用 20%左右,发热量较大,长期运行可能会导致硬件性损坏,必须注意散热
- 如果摄像头支持 mjpg 格式输出,mjpg-streamer只需要将得到 jpeg 格式的图片转发到 HTTP 服务器。但如果摄像头不支持 mjpg 格式输出,仅支持 YUV 格式,那 mjpg-streamer 需要将原始图片压缩成 jpeg 格式,因此需要消耗大量 CPU 资源
luvcview
命令可获得摄像头设备分辨率、帧率等信息blkid
命令查询设备上所采用文件系统类型。blkid
主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID 等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。dmesg
命令用于检测和控制内核环缓冲,用来帮助用户了解系统的启动信息- 列出加载到内核中的所有驱动;
- 列出所有被检测到的硬件;
- 只输出 dmesg 命令的前 20 行日志;
- 只输出 dmesg 命令最后 20 行日志;
- 搜索包含特定字符串的被检测到的硬件;
- 清空 dmesg 缓冲区日志;
- 实时监控 dmesg 日志输出
- 高级定制可通过下载源码后进行自定义配置再编译固件文件
- 固件文件的解包和打包可使用 firmware-mod-kit 和 binwalk 工具
参考资料
- TP-Link TL-WR703N 硬件参数:http://wiki.openwrt.org/toh/tp-link/tl-wr703n.
- openwrt 下使用 blkid 获取 U 盘文件系统格式 https://www.openwrtdl.com/wordpress/openwrt-blkid-gets-u-file-system-format
- openwrt 摄像头选购指南 https://www.openwrtdl.com/wordpress/openwrt摄像头选购指南
- openwrt 挂载摄像头 MJPG-streamer 完全教程 https://www.openwrtdl.com/wordpress/openwrt挂载摄像头mjpg-streamer完全教程
- USB Video Support https://oldwiki.archive.openwrt.org/doc/howto/usb.video
- Linux UVC driver and tools http://www.ideasonboard.org/uvc/
- gspca devices https://linuxtv.org/wiki/index.php/Gspca_devices
- USB 挂载&U 盘启动&Samba 共享 https://www.cnblogs.com/sean-yao/p/8224174.html
- OpenWrt 编译 – 说明 https://openwrt.org/zh-cn/doc/howto/build
- OpenWrt 固件的结构分析、如何逆向解包 https://blog.csdn.net/caofengtao1314/article/details/81252047
版权声明:本文为「梦幻之心星」原创,依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上原文出处链接及本声明。
博客园地址:https://www.cnblogs.com/Sky-seeker
微信公众号:关注微信公众号,获取即时推送