首页 > 技术文章 > 路由器硬改+刷OpenWrt+挂载摄像头+U盘

Sky-seeker 2019-02-25 22:29 原文

硬件改造

  1. 根据型号查找推荐的 DDR 内存和闪存
    https://oldwiki.archive.openwrt.org/toh/tp-link/tl-wr703n
  2. 用拖焊法换 Flash 和 Ram 以及外置天线(注意检查有无短路和断路)
  3. 完善 USB 外围电路
  4. 引出串口接线端子
    路由器WR703N硬件

刷入引导加载器和固件

  1. 下载对应主控型号的breedopenwrt 固件
    Breed下载目录
  2. 用编程器备份原厂固件
  3. 用编程器刷入 breed
    Breed_Web_恢复控制台-系统信息
  4. 通过 breed 控制台编程器固件更新刷入原厂固件,固件更新时勾选保留现有 Bootloader,取消勾选保留现有 ART,固件更新成功后即可恢复原厂 ART(无线校准信息),备份 ART
    Breed_Web_恢复控制台-固件更新
  5. 通过 breed 控制台常规固件更新刷入 openwrt 固件

安装相关驱动和软件

  1. 连接 USB 转串口与路由器串口之间的导线

  2. 使用 SecureCRTPortable 连接对应串口,取消流控下的勾选
    SecureCRT软件-会话选项-串行选项

  3. 连接成功后执行以下命令

    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 用于传输文件,可通过此方式访问设备文件系统,直接修改配置

  4. 启用系统->管理权下的SSH 访问

安装摄像头驱动

  1. 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 :生产商名为罗技,设备名为快看畅想

  2. 如果设备不支持 UVC 免驱,安装对应驱动(gspca 系列)

  3. 通过串口执行 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
    
  4. 执行ls /dev/,如果存在video0或者video1video2设备名称,说明已经正确识别

启动设备

  1. 进入luci 界面->服务 serivices->mjpg-streamer
  2. 勾选Enable MJPG-streamerInput plugin选择UVCOutput plugin选择HTTP
  3. UVC input下的设备选择识别到的设备名video0,设置分辨率和 fps,是否支持 YUYV 格式取决于设备
  4. HTTP output下的端口WWW folder保持默认值,也可自定义
  5. 点击保存应用,看到后台有mjpg-streamer进程说明启动成功

配置设备

  1. 获取设备具体型号

    1. 通过外观获取型号
    2. 通过网络获取型号(官网、中关村在线、淘宝拍立淘、以图识图等)
    3. 通过命令获取型号
  2. 获取设备具体型号和参数

    1. 将摄像头连接到电脑,进入 ubuntu 系统

    2. 安装视频和摄像头软件 v4l-utils(luvcview,spcaview,webcam,xawtv)

    3. 执行以下命令可获得设备分辨率、帧率等信息

      sudo apt-get install v4l-utils
      v4l2-ctl -d /dev/video0 --all
      
  3. 获取到的分辨率、帧率等信息如下
    Ubuntu系统-v4l-utils软件 摄像头参数

  4. 根据相关参数设置相关配置
    路由器WR703N硬件+OpenWrt-MJPG-streamer

  5. 点击应用并保存,设置界面出现图片,打开http://网关ip:8080,画面出现
    摄像头挂载效果

  6. 修改相关配置,设置 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    //停止
    

注意事项

  1. 资源占用高,CPU 长期 100%以上,内存占用 20%左右,发热量较大,长期运行可能会导致硬件性损坏,必须注意散热
  2. 如果摄像头支持 mjpg 格式输出,mjpg-streamer只需要将得到 jpeg 格式的图片转发到 HTTP 服务器。但如果摄像头不支持 mjpg 格式输出,仅支持 YUV 格式,那 mjpg-streamer 需要将原始图片压缩成 jpeg 格式,因此需要消耗大量 CPU 资源
  3. luvcview命令可获得摄像头设备分辨率、帧率等信息
  4. blkid命令查询设备上所采用文件系统类型。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID 等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。
  5. dmesg命令用于检测和控制内核环缓冲,用来帮助用户了解系统的启动信息
    • 列出加载到内核中的所有驱动;
    • 列出所有被检测到的硬件;
    • 只输出 dmesg 命令的前 20 行日志;
    • 只输出 dmesg 命令最后 20 行日志;
    • 搜索包含特定字符串的被检测到的硬件;
    • 清空 dmesg 缓冲区日志;
    • 实时监控 dmesg 日志输出
  6. 高级定制可通过下载源码后进行自定义配置再编译固件文件
  7. 固件文件的解包和打包可使用 firmware-mod-kit 和 binwalk 工具

参考资料


版权声明:本文为「梦幻之心星」原创,依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上原文出处链接及本声明。


博客园地址:https://www.cnblogs.com/Sky-seeker

微信公众号:关注微信公众号,获取即时推送
微信名:梦幻之心星 微信号:Sky-seeker


推荐阅读