标题: 路由器硬改+刷OpenWrt+挂载摄像头+U盘
作者: 梦幻之心星 347369787@QQ.com
标签: [路由器, OpenWrt, 摄像头, 固件]
目录: 路由器
日期: 2019-2-25

第一步,硬件改造

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

第二步,刷入引导加载器和固件

  1. 用编程器备份原厂固件
  2. 用编程器刷入对应主控型号的breed(https://breed.hackpascal.net/

  3. 通过breed控制台编程器固件更新刷入原厂固件,固件更新时勾选保留现有 Bootloader,取消勾选保留现有 ART,固件更新成功后即可恢复原厂ART(无线校准信息)
  4. 通过breed控制台常规固件更新刷入openwrt固件(https://downloads.openwrt.org/),备份ART



第三步,安装相关驱动和软件

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

  2. 使用SecureCRTPortable连接对应串口,取消流控下的勾选

  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或者video1、video2设备名称,说明已经正确识别

第五步,启动设备

  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. 根据相关参数设置相关配置

  4. 点击应用并保存,设置界面出现图片,打开http://网关ip:8080,画面出现

  5. 修改相关配置,设置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工具

参考资料

路由器硬改+刷OpenWrt+挂载摄像头+U盘的更多相关文章

  1. 第五章703N 刷openwrt 挂载u盘

    感谢原文 http://blog.csdn.net/qinpeng_zbdx/article/details/8577212 http://arch.pconline.com.cn//pcjob/sy ...

  2. openwrt挂载摄像头及视频保存

    一.编译选项的选择: -> Utilities ->usbutils (这个里面包含lsusb的命令,是查看你的摄像头型号的) -> Kernel modules -> I2C ...

  3. 7620N路由器刷openwrt系统并配置***

    之前一直用goAgent***,主要用gmail.逛逛twitter.youtube.维基百科.加速stackoverflow等等.但goAgent只能PC使用,手机.iPad都不能用,直到我拿到了一 ...

  4. [无线路由] “免费”斐讯K2路由器刷OpenWRT(实战MWAN多宽带网速叠加)

    (阿财首发于什么值得买)斐讯K2可以算是一个非常另类的跨界数码产品,其产品完全的醉翁之意不在酒.最多值99元的 MT7260硬件架构和用料,售价399元,金额激活K码后自动转入合作理财P2P平台,等待 ...

  5. 360路由器刷openwrt后设置wifi中继

    上一篇文章(360路由器刷openwrt.不死uboot.双系统 .wifi中继 - 飞鸿影~ - 博客园)讲了如何在360路由器C301上安装openwrt以及安装双系统.这篇文章讲如何设置无线中继 ...

  6. 360路由器刷openwrt、不死uboot、双系统 、wifi中继

    该类教程网上有很多,但是很多不全,给小白用户造成了很多困扰.我也是按照网上的教程刷了半天,才熟悉了是怎么个回事.这里整理成教程. 注意: 请看教程步骤走,不要跳跃性刷机.不懂的术语.软件,若本文无介绍 ...

  7. TP-LINK WR841N V8刷OpenWRT

    在某宝上淘了一个TP-LINK WR841N V8,已经硬改为8M闪存和64M内存,还刷好了Uboot.但是卖家刷好的系统是第三方定制过的OpenWRT,集成了很多不需要用到的软件,所以我要刷回官方原 ...

  8. 史上最全面的Buffalo WHR-G300N CH v2 刷OpenWrt教程

    Buffalo WHR-G300N CH v2 刷OpenWrt.有两种办法.一种是Windows下刷.一种是在linux下使用tftp刷.Buffalo WHR-G300N-CH v2的openwr ...

  9. 网络|N1盒子做旁路由刷OpenWRT系统(小白专用)

    N1盒子做旁路由刷OpenWRT系统(小白专用) 为什么要用N1盒子 现如今新上市的路由器,市面上能买到的300元以内的路由器大多数都是双频(5G Hz和2.4G Hz)和几年前相比无论是速度还是性能 ...

随机推荐

  1. xenomai内核解析之xenomai的组成结构

    @ 目录 一.xenomai 3 二.xenomai3 结构 这是第二篇笔记. 一.xenomai 3 从xenomai3开始支持两种方式构建linux实时系统,分别是cobalt 和 mercury ...

  2. Java——理解面向对象

    1.程序设计的三种基本结构 顺序结构 顺序结构表示程序中的各操作是按照它们在源代码中的排列顺序依次执行的 选择结构 选择结构表示程序的处理需要根据某个特定的条件选择其中的一个分支执行.选择结构有单选择 ...

  3. Collections集合工具类常用的方法

    java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...

  4. Java常见的集合的数据结构

    数据结构 数据结构__栈:先进后出 栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加.查找.删除等操作. 简单的说:采用该结构的 ...

  5. Spring Cloud 学习 之 Spring Cloud Eureka(架构)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 Eureka服务治理基础架构的三个核心要素: 服务治理机制: 服务提供者: ...

  6. Coursera课程笔记----计算导论与C语言基础----Week 8

    C语言中的运算成分(Week 8) 赋值运算符 "="赋值运算符 给赋值号左边的变量赋予数值 在变量定义的同时可以为变量赋初值 要点一:两面类型不同 若=两边的类型不一致,赋值时要 ...

  7. 【蓝桥杯C组】备赛基础篇之高精度算法

    一.高精度加法 思路: 运用vector数组(c选手可用len来记录数组长度,数组去保存数字)将存入字符串里面的数字符倒叙保存,按照小学的加法列式,相加保存进位即可.具体参考代码. 详细代码解析: # ...

  8. Coursera课程笔记----C++程序设计----Week3

    类和对象(Week 3) 内联成员函数和重载成员函数 内联成员函数 inline + 成员函数 整个函数题出现在类定义内部 class B{ inline void func1(); //方式1 vo ...

  9. java 实现mongoDB 增加,删除,修改,查看,多条件查询,聚合查询,分组查询(史上最全)

    首先idea创建一手springboot项目 引入如下依赖 <dependency> <groupId>org.mongodb</groupId> <arti ...

  10. Python基础语法day_02——字符串规则

    day_02 使用方法修改字符串的大小写 将字符串首字母变成大写 >>> name = "ada lovelace" >>> print(nam ...