標題: 路由器硬改+刷OpenWrt+掛載攝像頭+U盤
作者: 夢幻之心星 347369787@QQ.com
標簽: [路由器, OpenWrt, 攝像頭, 固件]
目錄: 路由器
日期: 2019-2-25
第一步,硬件改造
- 根據型號查找推薦的DDR內存和閃存(https://oldwiki.archive.openwrt.org/toh/tp-link/tl-wr703n)
- 用拖焊法換Flash和Ram以及外置天線(注意檢查有無短路和斷路)
- 完善USB外圍電路
- 引出串口接線端子
第二步,刷入引導加載器和固件
- 用編程器備份原廠固件
- 用編程器刷入對應主控型號的breed(https://breed.hackpascal.net/)
- 通過breed控制台編程器固件更新刷入原廠固件,固件更新時勾選保留現有 Bootloader,取消勾選保留現有 ART,固件更新成功后即可恢復原廠ART(無線校准信息)
- 通過breed控制台常規固件更新刷入openwrt固件(https://downloads.openwrt.org/),備份ART
第三步,安裝相關驅動和軟件
-
連接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