模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

楼主: libc0607

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路

  [复制链接]
 楼主| 发表于 2019-12-31 12:50:55 | 显示全部楼层
cdbaigao 发表于 2019-12-31 09:31
楼主这项目很有意思,持续关注!

感谢关注,考试月比较忙没什么进展
后面会做得与原项目更有差异一些 与ez/openhd/dronebridge等定位不同
回复 支持 1 反对 0

使用道具 举报

发表于 2020-1-29 16:38:35 | 显示全部楼层
看了你的笔记!芯片成本,图传延迟,信号。在这些 思路上实现是没有问题但是难度比较大。 我觉得可以沟通一下!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-10 21:50:03 | 显示全部楼层
mulovetou 发表于 2020-1-29 16:38
看了你的笔记!芯片成本,图传延迟,信号。在这些 思路上实现是没有问题但是难度比较大。 我觉得可以沟通一 ...

欢迎沟通
大家一起推动低成本数字图传普及
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-10 22:02:36 | 显示全部楼层
本帖最后由 libc0607 于 2020-2-10 22:37 编辑

楼主咕了这么久终于回来更新了。。

由于楼主入了nanovna 觉得也许可以在物理层搞点幺蛾子 又折(mo)腾(yu)了几个月 就有了这层楼  
这次主要是增加一个可能没啥用的特性 让无线频率可调节的范围更大

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 3037

核心选用了RFFC2071这个东西 它是个……呃 是个可以调节频率的东西(废话
它可以在本地生成一个频率 并与输入频率进行混频 再输出

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 6086

最后面向使用者的就是一个usb串口 往里写频率就行
效果就是 2.4G的传输你可以把它搬到433或915,或合法的1.4G去……
在这类频段请最好使用高性能的滤波器与最低的5M带宽 不然大概会有人来抓
请遵守当地法规 喝茶楼主不会负责的

(这一块成本大概在100出头 搞得楼主在学校时都不敢出去吃烤肉(x

软件部分直接用了现成的 自己能不写坚决不写 感谢 https://github.com/NightIsDark/RFFC
硬件和前几层楼一样 全开源在LCEDA (现在叫oshwhub?
https://oshwhub.com/libc0607/rffc2071-c8051f330-demo

但用了这个东西有个问题 关于收发切换 懂的人应该知道有啥问题了楼主为了省事儿其实不太想做 x
所以现在考虑退回到单向高速数传+辅助信道上双向低速这种方式
不过估计还得咕很久

继续咕咕咕








回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-12 16:25:46 | 显示全部楼层
接上层楼
如果我把LO频率设置成2000MHz 把无线网卡设成2432M/5M频宽
这样在(2432-2000)Mhz处会有一个以此为中心5M宽的一大坨ofdm
那我们就有了一个433M数字图传(大雾
并且验证了一个事实 ath9k网卡开5M频宽时子载波频宽也会随之除以4 这样在图传这种场景下比原本312.5k的频宽有优势

图2是用RTL电视棒看的 频宽不够 就截了个边缘处的 现在没有加任何滤波和功放 为了安全也把功率调到了最低
后面的滤波才是大问题(((吐槽下sdr的东西都好贵啊


EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 4720

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1979
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-2-12 16:40:36 | 显示全部楼层
本帖最后由 libc0607 于 2020-2-13 19:22 编辑

哦 忘记说了
人在地下室测试的 发射功率不到0dBm 没有占用什么奇怪频段
水表在门外 请不用拿我冲业绩 谢谢茄子
===

出于与上面改网桥那层楼相同的原因,具体解释一下这块混频板楼主这部分也是自学 可能有误 请指正

rffc2071内置一个pll 可以由tcxo输出的26mhz(我用的)信号生成一个85~2700mhz的信号 称作LO频率
这个频率分别输给两个混频器
混频器就是 输入两个信号 他们在时域上相乘 在频域上相当于做卷积 (当然省略了很多细节。。。
举例 如果不考虑各种高次成分和泄露的话 输入一个2432mhz 输入一个2000mhz
输出就会有 2432-2000 2432+2000
在输出加一个低通滤波 留下需要的2432-2000 就实现了载波频率的转换
当然实际上 由于高次成分和各种泄露 还会有无数的 m*2432+n*2000的mn组合。。。。。
所以如果你也做了 请确定各种频率不会干扰到你附近的重要业务
这个也可以使用分立的方案实现 比如adf4350+ad8342之类的 甚至还可能便宜点 性能不好说就是

rffc2071的输入和输出是以双端(balanced)的形式出现的
为了把同轴线给怼上  外围电路需要使用一个电路转单端(unbalanced)
常见的可以使用balun 就是我图里那个最高的四块儿东西 这东西衰减大一点但是能用的频率范围宽
另外也可以使用LC元件实现 这种频带比较窄 但便宜 比如无线路由器里在信号通路上靠近芯片的
---------=||=
---------||=||  --------------天线
长成这样排在一起的六个元件就是了
输入输出功率是有限制的 比如手册里要求输入不得高于+13dBm
这里假定由峰均比会差出8dB 那在debugfs下 txpower_custom里就要设定不超过+5dBm 防止搞坏

布线的时候 对于双层板 主要是尽可能保证有完整的地平面  射频部分尽可能不要搞连连看
阻抗匹配也需要留意 不过考虑到做阻抗板还要加钱&信号功率并不大 就只是算了个大致的走线宽度
输出的信号需要通过滤波器 去除各种不需要的频率成分 再放大 这个坑楼主正在填
这里也可以实现闭环的功率控制 就是在中间加一级可控的衰减 在输出使用定向耦合+对数检波的方式 让输出功率可控
不过对于jlc的5元板大概比较难以实现就先咕了

软件部分 为了用着方便 抄了@NightIsDark 的代码用
rffc2071这个芯片需要通过spi控制里面的寄存器 除此之外还有一些其他功能的引脚
比如这里比较重要的一个gpo4 这个引脚用来指示内部pll是否锁定 就是输出的频率是否达到你设的
这些最终都连接到一个c8051f330上  
c8051f330通过串口与一个ch340e连接 中间我做了个电平转换 其实也可以不加
主程序就是一个循环 读取串口 设置频率 很简单不说了
ch340e通过usb连接电脑 就可以往里写频率了

将信号搬到1.7g以下之后 就可以用便宜得跟不要钱一样的电视棒rtl-sdr观察信号了
这玩意儿还能收ads-b 建议玩远航的也配一个 防止不慎日了真飞机




回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-7 22:10:02 | 显示全部楼层
本帖最后由 libc0607 于 2020-3-7 22:23 编辑

还是关于ath9k玩法的探索
接45楼 一张图炸鱼 啊 终于可以在rtlsdr的一屏以内装下全部子载波了x
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1641

和esp8266 esp32之类的给基带pll降频来达成低带宽的玩法一样 截图这里用了一块ar9287网卡  两端子载波的中心频率差在1.5MHz左右 每个子载波的理论宽度为312.5/12约为26kHz
与LTE使用的15kHz相比接近了一些 又比普通wifi整整降了一个数量级 对于频率选择性衰落大概抗性能……高点?
暂时只动了AR_RTC_PLL_CONTROL这个寄存器 当然为了正常通信还需要改一些其他的数值 打算做个差不多的扔到chanbw里统一使用

AR_RTC_PLL_CONTROL这个寄存器 我作为一个普通网民可以获取到的最多的信息如下:
bit 16:       pll bypass
bit 15:14    pll clksel - 只改这个可以达成20/10/5/约4.5(?)的频宽切换,原理未知
bit 13:10    pll ref div  应该是个分频系数 正常是5 改大频宽变小  
bit 9:0       pll div 没试
另一个问题是由于不知道芯片内时钟树的结构,对这些东西的改动都充满风险以及其他蜜汁问题,需要大量的测试才行  
咕咕咕

测速的话,在占用约2MHz频宽下测速 单位bit/s:  
MCS0   8/4/1024  782686  最低的极限情况
MCS2   8/4/1024  1565373 QPSK 大概是一个比较实用的速率  
MCS7   8/4/1024  2454790 1t1r极限
MCS15 8/4/2276  4823558 算是ar9287在这频宽下的极限
(只测了ofdm的,用802.11b那些直接扩频又把频宽降回来还不如整个24l01跑我的eth_uart)




回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-8 15:25:39 | 显示全部楼层
接昨日更新
意外地在其他Atheros的SoC手册中找到了WLAN PLL寄存器定义……虽然和昨天的ar9287有一点点区别但大概的意思可以猜出来
看来应该是可以直接改动REF_DIV这个了
按照公式的描述,WLAN PLL最后的频率表达式应该是形如:  (一个其他参数算出的频率)/ (REV_DIV * (2^CLK_SEL))
这里REF_DIV的取值范围 对于ar9002是0x5~0xF 对于ar9003是0x5~0x1F ;CLK_SEL则是0x0~0x2
这很吼哇 excited 意味着频宽可以从1.66MHz一路调到20MHz 共有近30档可选 可选择数比dvb-t什么的多多了
1.66 1.8 1.92 2.08 2.27 2.5 2.77 3.1 3.33 3.57 3.84 4.16 4.54 5 5.5 6.25 6.66 7.14 7.69 8.33 9.09 10 11.11 12.5 14.28 16.67 20
如果开了HT40(又是另外一个待填的坑Orz) 那又翻个倍

昨天的更新 https://github.com/libc0607/lede/commit/c96f8c4bb88566d933b640b6add1d5face049d34 暂时只做了ar9002
除了PLL分频以外,由于最基础的时钟变了,还需要改动各种延时周期 像各种delay, sifs time, symbol time之类的……。
很烦就是 并且也想不到什么好的无极调速(?)方法 现在的想法是时间按比较长的来 虽然在图传这应用场景下其实不用管各种延时无脑发包就是了(?)。

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 2233
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-3-8 19:44:34 | 显示全部楼层
关于原wzwbc项目在802.11物理层做出改动的一些笔记
这里由于楼主本人也不是研究这个方向 只是自己看了一些资料 写的也都是些最最入门的内容 意在抛砖引玉
可能有误请指出
这层楼也是 CC BY-NC-SA 3.0

原ez-wbc在linux-4.9.28-ath9k_htc-misc.patch 这个patch里对ath9k_hw这个内核模块做了一些改动
主要是增加了一堆module param 具体怎么用自行百度
openhd应该也是沿用了这些改动 所以并不过时 可以看看
https://github.com/rodizio1/EZ-WifiBroadcast/blob/develop/kernel/linux-4.9.28-ath9k_htc-misc.patch#L242 从这里开始

txpower
这个参数和我改发射功率那个patch一样 就是一个用来设置发射功率的 单位0.5dBm

cwmin/cwmax/cck_sifs/ofdm_sifs/slottime
这些数说来话长,要解释一下802.11的避让机制

无线资源不像有线网络那样可以被独占,如果多个设备同时发包就会在空中造成碰撞
802.11采用了CSMA/CA机制来解决这个问题,CSMA/CA的资料在网上很好找就不解释了
大概意思就是:设备会先对空中的无线能量进行监听,并将这个能量与一个基准点进行比较
如果低于这个基准点,则认为信道空闲;
如果高于这个基准点,则认为信道被占用,并持续监听到信道空闲

为了实现这个逻辑,芯片的物理实现上需要提供能量监测功能,并且判定基准点应该是可以软件配置的
修改这个基准点可以让发射机忽略一些其实影响并不大的弱信号,在有干扰的情况下提高吞吐量降低时延
(mur 有一个神秘数值出现了!.jpg)
patch中加入了一个叫thresh62的申必数值
首先这个62是啥:OFDM调制下,在不同的调制方式及编码方式下为了满足一定的包错误率(PER, packet error rate)
而对不同的调制方式及编码方式下的最低信号灵敏度(minimum sensitivity,不知道这样翻译对不对—)做出了要求
这个要求在IEEE 802.11 2007 Table 17-13中可以看到,这里注意一个最小数值:20mhz宽,BPSK 1/2时需要 -82dBm

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1164

为了可以正确接收数据,当然信号的强度要高于这个表中的强度才可以解调;
当监听到空中的能量高于这个值时,肯定会淹没你的信号,这时候就需要指示空中正忙;
但当观测到的能量中并没有出现像是前导码之类的信息时,也有可能是别的什么人在胡搞,他可能并不遵守802.11这套规矩;
所以这时将这个值再提高20dB(这两句不知道我理解得对不对,有误请指出)
就有了-62dBm这个数字 于是称之为thresh62
由于这个是IEEE 802.11强制规定的,但每个芯片性能又不会完全一致,所以该往芯片的控制寄存器(如 AR_PHY_CCA)里写什么数?
故这也属于出厂校准的一部分,会被存在eeprom(ART)中
通常在上电初始化时从eeprom中读取,举例如 eeprom_def.c 中的 ath9k_hw_def_set_board_values
更加详细的细节可以在IEEE 802.11 2007 标准中搜索 CCA sensitivity 可以找到相关描述

有了能量监测之后就可以根据这个来发包了。但802.11中还为不同的数据包定义了优先级:
以在这个项目中出现的几种帧为例,如RTS/CTS这种需要高优先级的传输,普通的data包可以缓一缓
为了达成这种优先级选择,802.11规定发射机在监测到空中的无线能量低了之后,为每种不同优先级的包等待一个不同的延时后再发送
这个固定的时间大小叫做 帧间隔(IFS,Inter-Frame Space),根据帧类型不同分为:
SIFS (Short IFS) 短帧间间隔 / PIFS (PCF IFS) PCF 帧间间隔 / DIFS (DCF IFS) DCF帧间间隔 / AIFS (Arbitration IFS)  / EIFS (Extended IFS) 扩展帧间隔
RTS/CTS这种帧发送前需要等个SIFS; PCF是个为时延敏感的应用设计的东西,现在用得并不多,这里也没用到就不说了;
AIFS是802.11e搞出来的,用于QoS,在AP和STA下时长并不相同但是都比SIFS大,太踏马复杂了懒得看。。
剩下基本都是DCF帧,DCF用竞争机制,谁能抢到谁就能发。。如果选data的话用的就是这个帧;EIFS主要跟帧出错了有关,错了多空一段时间,反正这里用不到
这些数值的大小关系通常是 SIFS最小 < PIFS(slottime+SIFS) < DIFS(2*slottime+SIFS) < EIFS(SIFS+DIFS+最低速率下ACK帧所需时间)
以此来实现优先级:优先级越高的帧,需要等的固定时间就越小,就很容易抢到传输权;
其他的发射机多等了一段时间后发现空中又有能量了,就接着等了(发射机:mmp)
cck_sifs和ofdm_sifs 顾名思义就是根据调制方式区分了一下 看你其他的配置决定有没有用了

但存在一个问题:当多个设备同时等待了相同的帧间隔后,他们要发的包还是同类包;这就依然存在再次同时发包的可能
他们采用了这样的一个解决方法:各设备等待相同的帧间隔后,再等待一个随机数时间后发送,这样再次碰撞的几率会变得很低
这种方式也叫ALOHA方式,虽然和那位老人没有任何的关系(推了推眼镜
发射机先等待一段由帧类型决定的时间后,再等待一段在时间窗口中随机到的时长后再发送,这个时长叫做退避时间(Backoff Time)
在802.11中,退避时间由两个值所决定:时隙Slottime * 一个随机数
随机数需要一个上下界,这就有了CWMIN和CWMAX两个值:CW全称为Contention Window,竞争窗口,会在这两个数之间随机一个值
cwmax在802.11a中是15,也是wbc的默认值;slottime默认则是9us
这样就可以尽可能避免出现碰撞了

最后来看一下为什么ezwbc要为改这些数值提供接口
改txpower太好理解了。。你需要power
改cwmin/cwmax/slottime 就是你的包能不能在一大堆等着发同类数据包的发射机中脱颖而出(?)
改sifs值就是你的rts/cts包能不能抢。。aifs同理
改低一点thresh62可以让发射机不那么关心噪声,你吵你的我该发还是接着发
但这些说来说去都是在802.11的规则框架下如何开挂;如果你选了一个没人用的频率……就不用管这些了233

参考资料:
"Understanding Wi-Fi Carrier Sense",http://www.revolutionwifi.net/revolutionwifi/2011/03/understanding-wi-fi-carrier-sense.html
“CCA更新流程分析”,https://www.cnblogs.com/gierwu-wirelessIoT/p/7467245.html
"ALOHAnet - Wikipedia",https://en.wikipedia.org/wiki/ALOHAnet
IEEE Std 802.11™-2007, 自己网上搜搜就有
通信IC设计 下册,没有电子版可以买实体书


回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-13 16:22:48 | 显示全部楼层
接48楼 关于增加几档传输带宽的设定 https://github.com/libc0607/lede/commit/53130f462e5cfda914c433cf54ec532e06064a14

现在只测试了发射……接收还没测 不过只要两边基带时钟对得上估计通信没啥问题(
现在加一起支持 2.5M/5M/7M/10M/12.5M/20M 这几种占用带宽 如图 (换了个hackrf看频谱 比rtlsdr爽多了(

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 6883 EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1498 EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 2322 EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 3324 EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1353 EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 9679

下一步可能会开搞功放 大概会做一个2.4g的 再做个433或者915
不过自己搞功放麻烦在于收发切换比较难办……(



回复 支持 0 反对 1

使用道具 举报

发表于 2020-4-14 20:44:30 | 显示全部楼层

请联系论坛管理微信moz8com,领取赠品(邮费自理)http://www.moz8.com/thread-179832-1-1.html
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-28 11:57:10 | 显示全部楼层
冒个泡,证明一下这个帖子还会继续更下去,最近实在是太tm忙了看到dji新飞机加了个ads-b接收功能,正好我也在搞,图里右上——f1c200s+sdrplay的sdr方案,刚把uboot和内核跑起来,说实话性能不知道够不够,试试再说
先把坑占着 搞完开源(
图里都是待填的坑,多多少少都和这个图传相关,慢慢填吧……填好会回来更新

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 314
回复 支持 0 反对 1

使用道具 举报

发表于 2020-4-29 14:13:26 | 显示全部楼层
帅哥 麻烦私聊发个微信!或者你加我 有事请教! vmax_12
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-5 23:54:48 | 显示全部楼层
研读了你写的全部笔记,其间涉及到linux内核,wifi网卡,天线,无线通信,软硬件等诸多方面,属实不易,这么好的技术贴要被顶起来,且同是模友及linux开发者,深知数传和图传的重要性和复杂性,楼主加油,支持你。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-6 15:22:03 | 显示全部楼层
Markus 发表于 2020-5-5 23:54
研读了你写的全部笔记,其间涉及到linux内核,wifi网卡,天线,无线通信,软硬件等诸多方面,属实不易,这 ...

感谢支持,努力填坑,共勉
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-17 02:30:41 | 显示全部楼层
关于使用海思芯片进行H265双路编码的事
楼主最近实在太忙 这部分的代码还在修改测试 最近会陆续推到 https://github.com/libc0607/YJSNPI-Hi 同时也会跟着写几层楼的分析和食用说明
(什么修改测试不就是糊代码x
由于涉及文件系统的修改 内容可能会有些多 不过楼主这帖子都写了一年了也不差这点((
另外tf卡需要扩展板 淘宝卖的那种很迷 不知道哪位带手子发明了2.4g天线并联这种申必操作 于是自己画了一个 但是估计明早才能到就之后再更

现在使用雄迈的Hi3516EV300+IMX335模组 可以实现 录制一路 2304x1296@30fps,h265 并保存到tf卡 同时另一路480p@30fps,h265 通过网口走udp传出
(这样可以把频宽调得比较小 然后只回传一路1Mbps H265 同时也可以保持还不错的画质 还可以直接录好 另外这传感器夜视效果相对价格来说还挺不错
现在有一个问题是延迟稍高 原因未知 测试大概会在150ms~200ms 不过实际感受还好

这种模组可选变焦镜头(步进电机那种) 还在路上 到货的话估计会搞个arduino 通过接收pwm信号控制一下?


EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 4403

EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1655

(上一层楼挖的基于f1c200s的ads-b接收机先咕一会儿,等把这个和射频前端板子调得差不多了就去填坑……
(另外图里还有一个LT6911C的hdmi转mipi csi 坑虽然拿到了一点资料和烧录的hex但是由于没空写树莓派的驱动和uv4l适配就也咕了……
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2020-5-17 22:38:20 | 显示全部楼层
关于雄迈模组:第一部分 简介 & 原固件拿到root权限 & 修改自己的rootfs & 刷机
由于整个帖子被我水成了开发者笔记的形式,这一层主要在于记录折腾过程,需要有一点点linux基础,并非将大象塞进冰箱之后就可以航拍的教程

如果到淘宝搜 监控摄像头模组 这种关键字,你会看到很多这种集成了Sensor和主控的模组,甚至还可以让卖家配好镜头调好焦
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 4080
接上电,接上网口,它就能输出H265视频,加点钱还可以扩展tf卡,真香
这里楼主使用的是二次开发的思路,至于为什么不是直接把原厂软件的输出搞过去,只能是因为楼主太蔡了

在这种模组中,如果是用来二次开发,需要认真选择一下主控和Sensor的型号
我这里选择的是 雄迈 IVG-85HG50PYA-S 模组,海思 Hi3516EV300 + 索尼大法IMX335 的方案,配镜头和扩展板大概100上下(当然不是变焦镜头,这又会是另一个坑)
主要考虑因素如下:1 海思SDK随便就能搞到,文档很丰富;2 大法这个传感器是sdk里就支持的,datasheet也容易搞到,不需要再去做适配;3 支持usb/tf扩展
索尼大法这个传感器其实挺有趣的,后面会附上手册,虽然最大只支持500万输出,但这玩意儿的像素尺寸足有2umx2um。。。熟悉传感器的应该知道这是啥意思
(当然你买3516ev200+imx307的那个模组也可以就是内存小一半……
另外Hi3516EV300 这个芯片最有用的功能之一是支持同时输出一路2304x1296@30fps和一路720x576的h265码流,
这样就可以把一路高分辨率的直接本机保存,另一路低分辨率的传回去,既不用地面录花屏也不会占用带宽……
(缺点就是如果飞丢了那会带着tf卡一起丢。。。((
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 5121


下单的时候需要注意至少买齐这些:模组本身,镜头+座(接两根线出来的那种是集成了ircut),对应型号的尾线,扩展板,强迫症记得买铜柱;可以让老板帮忙配
另外需要买的是立贴的16p 0.5mm fpc座(如立创商城C11071),16p 0.5mm fpc 反向的软排线, 1.25mm 3p直插的座及线(串口用),usb串口模块,以及基本大家都有的12v电源和网线
焊好排线座和串口座之后把扩展板接好,串口接好-由内到外GND TX RX,尾线按照卖家给的定义接好,就可以上电了
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 1954
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 8559
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 6264
EZ-WifiBroadcast 在 OpenWrt 上的移植与修改 另一种数字图传思路  作者:libc0607 6295
这里楼主用的是自己画的底板,包含tf卡/3个usb口/一个usb转串口/rtc电容,不是很满意,可能还会再改一版
https://oshwhub.com/libc0607/xm-ext-board-fpv 在这

第一步 开启telnet
上电之后串口会出现uboot的输出,狂按ctrl+c后会出现
hisilicon #
在这里需要修改一个环境变量,为了打开telnet
setenv telnetctrl 1
saveenv
reset
(参考:https://www.cnblogs.com/mmseh/p/6537924.html)
将电脑ip设置成192.168.1.x,网线直连电脑,telnet 192.168.1.10
用户名root 密码xmhdipc 然后你就拿到了这个摄像头的root权限

首先干掉原厂进程,原厂的监控软件进程名叫 Sofia,把这东西以及XmServices_Mgr 给 kill -9 掉
killall -9 XmServices_Mgr Sofia SofiaRun.sh && rm /mnt/mtd/Config/RebootAbnormal

但这还不够,因为原厂软件开了芯片的看门狗,干掉它之后过一会儿就重启了。。
查看芯片手册,然后用
devmem 0x12030c00 32 0x1ACCE551
devmem 0x12030008 32 0
关掉看门狗
现在就自由多了

下一步就是试着修改自己的rootfs了,首先dmesg找一下分区(或者uboot里printenv
Creating 6 MTD partitions on "hi_sfc":
0x000000000000-0x000000040000 : "boot"
0x000000040000-0x000000580000 : "romfs"
0x000000580000-0x000000cc0000 : "user"
0x000000cc0000-0x000000e40000 : "web"
0x000000e40000-0x000000ec0000 : "custom"
0x000000ec0000-0x000001000000 : "mtd"
dd if 读出/dev/mtdblock 0~5 保存备用
保存的方法最简单可以插tf卡进去,原厂有个目录在/var/tmp/mmcblock0,挂载tf卡
mount /dev/mmcblk0p1 /var/tmp/mmcblock0
再把备份出来的文件移动到/var/tmp/mmcblock0即可

romfs和user区是两个squashfs的文件系统
binwalk -e 解开这两个rootfs
会发现一些基础功能放在了romfs里,挂载在/;sofia以及一些ko之类的放在了user里,开机后挂载在/usr 这里
由于原厂固件的busybox是严重阉割过的,首先从芯片sdk给的打包好的rootfs里直接把编译好的busybox和对应的链接移过来
关于SDK,这里使用linux那个,不是liteos那个;sdk里有详细的安装环境过程就不写了

然后需要修改一下启动脚本,开机不去自动运行sofia,而是自动打开telnet
要修改的部分主要在 /etc/init.d/rcS
找到这一行 XmServices_Mgr /lib/modules /usr/sbin/SofiaRun.sh 127.0.0.1 9578 1  # not add '&', it has invoked fork internally
注释掉 就不会运行了
然后把开启telnet的也写在这 保存 就行
另外建议修改下面 mount /dev/mmcblk0 的这一部分
由于不少tf卡在windows下分区后会是/dev/mmcblk0p1,这样的话/dev/mmcblk0就并不能挂载
可以改一下,也可以不改;这部分可以用作为tf卡预留的执行命令用的接口
注意romfs和user都要改一下 因为busybox的链接很多

最后完成所有修改之后,mksquashfs 重新打包
mksquashfs <要打包的文件夹> <要生成的镜像名> -b 64k -comp xz
会生成新的打包好的镜像 假设就叫romfs.bin user.bin
刷机时 电脑通过网线直连模组 ip设为默认的192.168.1.107 用tftp32开一个tftp服务器

如果你用的模组和我这个的分区表一样的话 可以参考我的刷机命令 除此之外不要尝试除非你有能力救砖或者无限买新的(?)
mw.b 0x42000000 0xff 0x540000;tftp 0x42000000 romfs.bin
sf probe 0;sf lock 0;sf erase 0x40000 0x540000;sf write 0x42000000 0x40000 0x540000
mw.b 0x42000000 0xff 0x740000;tftp 0x42000000 user.bin
sf probe 0;sf lock 0;sf erase 0x580000 0x740000;sf write 0x42000000 0x580000 0x740000
reset
之后开机就有串口控制台了。。。因为原来阉割太厉害了。。。。。


下一层楼大概会写如何自己糊一个可以同时存储视频+udp发送的程序
有生之年会发个集成好的固件(咕









回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-16 22:21:51 来自手机 | 显示全部楼层
小白一个,看不懂啊!头疼
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-17 11:51:40 | 显示全部楼层
libc0607 发表于 2020-2-10 22:02
楼主咕了这么久终于回来更新了。。

由于楼主入了nanovna 觉得也许可以在物理层搞点幺蛾子 又折(mo)腾(y ...

其实没必要用RFFC2071,要考虑杂散,相噪,散热等等,成本又高。用ath9k直接解锁频率到1.6GHz,既是无人机合法频段,底噪又低,只要调一下外围的射频电路,把balun部分弄好,再加一个低沉本PA即可。唯一可能的问题就是VCO不是线性的,控制频率没有这么准,不过补偿一下就好了。另外灵敏度可能会下降几个dB,不过综合底噪的降低,传输的衰减小等优势,相比2.4G,还是很有优势的。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-6-17 13:38:20 | 显示全部楼层
veally 发表于 2020-6-17 11:51
其实没必要用RFFC2071,要考虑杂散,相噪,散热等等,成本又高。用ath9k直接解锁频率到1.6GHz,既是无人 ...

ath9k可以到1.6g?我之前只试过到2.1g附近 有啥提示么 我看看
回复 支持 0 反对 1

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!