“使”流行的中国迷你路由器Hame A15(也称为“无品牌A5-V11”)克隆的准则

如果我超越别人,那是因为我站在巨人的肩膀上。
牛顿


我想很多人都知道小型中国路由器Hame A15(它的确切版本,或与之相比具有改良版TTX的大量副本,在ebayaliexpress上都被3g / 4g路由器关键字谷歌搜索 )。 今天,我想告诉我如何想到6.5美元的路由器,并在上面花费20美元。 怎么了 出于相同的原因,手链是用珠子编织的-为了训练微电机和视力(组件主体主要是0402 :)在很大程度上出于运动兴趣,尽管这台路由器今天是我最喜欢的各种路由器的基础也很重要项目(即使很难访问GPIO),而不是“流行的” NEXX WT3020F,TP-Link TL-MR3020,TP-Link TL-WR703N等。 其原因主要是其尺寸和印刷电路板的形状,便于嵌入到任何地方(在照片中您可以估算尺寸)。 将来,为避免术语混淆,我将命名如下所示的设备,该设备由wiki openwrt - A5-V11调用。



该设备的核心是360 MHz SoC Ralink RT5350F,板上有一个完整的USB主机,4 MB闪存和32 MB SDRAM,频率为166 MHz(这很奇怪,因为即使是古老的D-link DIR-320板载的DDR更快) 某些克隆克隆具有16 MB的内存,因此不适合在不增加RAM的情况下进行本文所述的操作。


与往常一样,下图显示了原始的Hame A15路由器。


原始Hame A15
图片

这是他改进的中文副本(在文章结尾处,您可以看到该副本的另一个副本,但价格却高出10倍:)。


中国克隆Hame A15
图片

固件内部已经在集线器上照亮了,因此我不会再赘述标记的功能。 有关详细问题和解决方案的信息,请参见w3bsit3-dns.com 。 有很多信息,但分散得令人难以置信。 我希望根据大家的经验收集本文的要点-“路由器生产的巨人” :)
对问题“为什么这个(路由器)为什么需要一个没有经验的用户”的回答,引用用户ded1971


消费者属性-多功能,紧凑的3G-WiFi路由器。 在没有内置WiFi的情况下,旅行,连接3G / 4G调制解调器,整理WiFi网络或将其用作中继器来增强WiFi,将Internet连接到智能电视都非常方便。 通常,一堆有用的功能可笑的钱。

好吧,与无处不在且广受欢迎的ES8266进行比较

第一部分,准备


当路由器在邮寄邮件时,有时间研究快乐的所有者的评论。 大多数人面临的主要问题是路由器(以及相应的“芯片刀片”)过热和电源不稳定的问题,当路由器无法长时间启动时(“指示灯”-两个LED灯暗淡,无法通过以太网连接到设备)。
为了解决第一个问题,决定在芯片上安装散热器。 为此,我订购了尺寸为12x12x3 mm(恰好是芯片尺寸)的小型铝散热器。 之所以选择3毫米的高度,是因为我希望突出的散热器不要粘在物体上(例如放在书包中),并且router刨机可以稳定地放在桌子上。


那就是散热器的布局...

为了修复散热器,我决定使用热熔胶。 在我们地区可用的产品中,只有“一次性”的Alsil-5,尽管导热性相当好,但这并不意味着可以长期保存。 它会在几天内变干(如果幸运的话,您可以购买已经干dried的)。 因此,在同一速卖通上,订购了两种用于大功率LED散热器的热熔胶-Halnziye HY910Hcbonyx HC-910


中国大力热熔胶

在专业论坛上对它们的评论也不错,尽管专家仍然建议使用两组分环氧热熔胶(例如Thermopox 85CT)来完成严峻的任务。 但是去找他呢...
为了以防万一,下面我将在互联网上提供我所使用的热熔胶的导热系数的比较特性。


热熔Halnziye HY910-导热系数0.975W / mK
热熔胶Alsil-5-导热系数1.4-1.6W / mK
HCbonyx HC-910热熔胶-导热系数1.7W / mK

和一般的照片:)

为了安装散热器,我不得不切割外壳(包括改善传热)。 为了尽可能准确地完成所有工作,我要做的第一件事是在厚纸上画板尺寸,在芯片上切一个孔,然后将纸板模板放入盒中。 然后,一切就变得简单了-用铅笔绘制孔的轮廓,用笔刀将其切开并研磨锉刀。



散热器的塑料外壳的标记和修整12x12



在安装散热器的同时, 有必要将缺失的10 µF 6.3 V陶瓷SMD电容器焊接到3.3V转换器电路中的路由器。 (根据用户return1的建议)。 安装位置如图所示:



这是一块已经安装了10微法拉6.3 V电容器的电路板

根据评论,该设备的电流消耗减少并且变得更加稳定。 据推测,在3.3V转换器中,输出上会出现纹波,从而使处理器无法工作。 电容器可以消除这些纹波。


重要! 在启动和操作路由器之前,请尝试安装散热器并焊接电容器。 否则,可能证明Borjomi喝酒太晚了...


人们可以通过安装专用的电源监控器芯片代替路由器的标准RC链(例如KR1171SP28DS1816MAX809TTR)来解决电源问题 。 我立即喜欢使用Maxim电源监控器的选择。 监控器可以解决的两个主要任务是将控制器保持在复位状态,直到电源电压达到设定值并稳定为止;或者在电源电压降至临界水平以下或电压突然下降时使控制器复位。 同样,由于这种类型的管理器的优势,可以注意到,不需要额外的组件来安装微电路,并且就尺寸而言,该半导体器件可以代替所移除的元件(是的,您必须首先移除不必要的电阻器和电容器,然后再进行检查。编织在护垫上)。



在速卖通上的搜索没有产生任何结果,但在CHIPiDIP目录中进行了搜索 ,找到了MAX809TEUR + T脉冲整形器 (复位电压为3.08伏),其中之一已成功焊接到路由器。



设置脉冲整形器(复位)MAX809TEUR + T



顺便说一句,我不禁要提到中国的USB电烙铁 ,没有它,我将永远不会改变这个程序(即使使用了受好评的微波炉……)。
为了不浪费烙铁,同时我决定将一个触点块焊接到UART控制台(脚跟)的接触垫上,以简化与Arduino设计人员的杜邦线的连接。 焊盘焊盘的理想间距为2毫米(标准的2.54毫米已经很宽)。 例如,这些 。 为了方便焊接,在镊子的帮助下,我用字母G弯曲了触点的末端,并在路由器板上镀了斑点。


准备UART控制台

然后将块安装在脚跟上并稍微加热结点,直到焊料融化就足够了。 重要的是不要过度使用(用强力烙铁很容易做到),否则仔猪可能会因过热而掉下来。 在这种情况下,图片显示了可以焊接的备用测试点。



顺便说一下,您可以用另一种方法焊接触点,但是不能像这样那样关闭外壳。


UART引线的替代焊接

至此,准备部分结束,主体部分开始了。


第二部分,“程序员”


正如我在文章开头提到的那样,路由器的内存很少,只有4 MB。 当然,有人可以想起“ 640 KB对每个人都足够”这一事实。 但是花了一周的时间尝试将所有必要的程序包塞进D-Link DIR-320的自组装openwrt中,然后才知道有8 MB(!),现在可以确定不值得节省内存。 因此,决定将闪存更改为更大容量并同时具有合理的成本(以免比路由器本身更昂贵)。 需要替换的芯片必须具有至少100 MHz的有效频率(SPI时钟频率)和3.3 V的电源电压,在制造商中-Winbond或任何其他芯片(En = Eon,Mx = Macronix,Pm = PMC,At = Atmel)。 openwrt.org建议提供的是W25Q128BV ,MX25L128(35F),S25FL128P,S25FL129P,GD25Q128C,GD25Q128CSIG。 标记中的数字128告诉我们,闪存驱动器的容量为16 MB(128Mbit = 16Mb)。 选择标称尺寸的原因是这样的事实:廉价的24/25 CH341A内存芯片的中文编程器(如下所述)可以在不使用手鼓跳舞的情况下以这种体积工作。 对于风扇,我可以说可以焊接32 MB(例如W25Q256FV,MX25L25635F,N25Q256A,MX25L25645GM2I-10G甚至64 MB(MX25L51245G,MT25QL512AB)),但是,我想指出的是,内存的价格与64 MB模块的价格相差甚远。我会注意到,仅在最容易焊接的SOP8封装中谈论存储芯片,您当然可以在WSON8外壳中使用接触垫而不是支脚来获取芯片,但是焊接太费时,结果可能不尽人意
您可以通过几种不同的方式来刷新存储芯片,具体取决于可用的存储方式:
a)有一个二极管/电容器和一个并行端口(最简单的编程器)-我们在捷克语网站俄语中查看固件说明。


因此,这个来自LPT连接器的最简单的编程器和一些细节看起来像生活中的样子
图片

b)有任何Arduino(Pro,Micro,Nano等)-我们将根据以下食谱为他们准备SPI闪存驱动器的编程器。
c)如果有Raspberry Pi,请看这里
d)有一个“流行的” USBASP编程器(曾经在Habré上编写过)-我们正在根据2号配方进行准备。
e)只有欲望和一点钱-我们在速卖通上购买了中文编程器CH341A,用于24/25 SPI闪存,然后安静地开始工作。


闪存驱动器本身按如下方式连接到编程器:


内存芯片引脚排列
图片

可以将闪存驱动器焊接并连接到编程器的焊盘/适配器,也可以将已经提到的来自Arduino的杜邦线焊接到该驱动器上,然后将其连接到编程器上。 闪光灯的“工作”点是触点MISOMOSICLKCSVCCGND 。 如果在不从板上移除微电路的情况下进行编程,则最好在一段时间内拆焊并稍微升高VCC触点在板平面上的位置。 完成工作后,将脚压到板上并焊接。
由于我不想寻找LPT端口,因此我决定采取最后一种选择e),并在公园内购买一块额外的铁。 这个东西叫做CH341A ,很奇怪的是,它是基于CH341芯片的程序员,背后是“中国知名的大型公司” 江苏秦恒有限公司的创作。 :)


编程器电路图
图片

订购编程器时,强烈建议您另外购买从SOP8 / SOIC8外壳到DIP外壳的适配器 ,以及用于处理微电路的回形针


适配器和夹子


您不能追求节省的钱,而是立即购买一个由编程器和所有必需的适配器组成的现成套件,然后除了上述两个适配器之外,您还将获得一个用于对1.8 V芯片进行编程的适配器。


看起来像现成的套件

根据我自己的经验,我会说晾干夹每隔两次就可以工作,很可能必须将芯片拆焊并放入SOP8-DIP适配器中,或者甚至焊接到编程器本身的焊盘上。


另外 :终于我的适配器来了,或者被正确称为ZIF适配器SOP8-DIP8 150 mil 。 该适配器适用于外壳宽度为150mil,针距为1.27mm的微电路。 除了1.5亿,可能还有2亿,因此在拍卖中订购时一定要注意这一点(我有微芯片,并且相同,因此有两个适配器)。


如何在视觉上区分ZIF适配器150和200 mil

工件非常方便,微电路易于夹紧,自然且非常清晰(系统类似于钳子)。 为此,只需单击外壳的弹性上部,将芯片放在裸露的区域上,然后将外壳的这一部分释放回来。 弹簧加载的上触点在释放时会延伸,并且微电路会自动夹紧(为清晰起见,因为200 mil的微电路位于150 mil的适配器中,所以我没有踢,而是将其卡在手边)。 然后,将其安装在编程器中,查看脚1(芯片上的圆圈)的位置。 原来是这样的:



DIP8适配器上SOIC8 SOP8的更精美图片




我使用热风焊接站拍摄了本机存储芯片,对于那些没有此类设备的人,我强烈建议使用玫瑰合金方法 。 下班后,请务必从板子和微电路上除去带编织层的玫瑰合金的残留物,以免罪恶。
我们将拆下的微电路连接到编程器(对于谁来说,结果如何)。 我太懒了,不能焊接,说实在想捏一下夹子,结果,夹子的弹簧使腿变得很扁平。 但是我不打算再焊接4 MB的闪存,但是良好的接触应该可以确保读取流畅。 事情就这样发生了。 对于那些焊接微电路的人来说,请注意-仔细看一下适配卡上的数字,并按照它们进行焊接。 如果是夹子,钥匙圈上的红色电线在支脚编号1上。



从...成功捕获并...




处理铁之后,您必须处理软件。 正如我已经写过的,该程序员在集线器上定期弹出文章 。 很明显,它可以在所有现代操作系统上正常工作(例如,在Windows 10中,驱动程序会自动从网络中拉出;在Linux中,它们已经存在于内核中已有好几年了)。 但是,但您永远不知道会发生什么, 在这里您可以找到驱动程序(对于串行/并行模式)作为单独的文件,以防万一。 在Windows中进行编程时,最常使用某些SkyGz的中文软件 。 对于Linux,有开放项目ch341prog (SPI)和ch341eepromtool (I2C),您可以使用“民间” flashrom 。 由于我使用Windows,并且大多数用户对“中国程序”的评论不是很积极(尤其是关于1.28 ... 1.30新版本),因此不会被命运吸引,因此使用简单,可靠的俄罗斯程序员AsProgrammer读取了该芯片。 版本1.4.0 。 顺便说一句,如果某件事突然不喜欢/不清楚,或者例如,您需要添加一个新的微电路,则可以轻松地在“技术支持”主题中撰写并获得快速反馈。


为什么不值得购买超过16 MB的闪存

我将稍作讨论,并解释我不愿意安装32 MB闪存驱动器的情况(与16 MB的价格差异并不重要)。 事实是,既没有中文程序(1.29版或1.30版),也没有提到的AsProgrammer支持微芯片ala W25Q256FV,MX25L25635F,N25Q256A,MX25L25645GM2I-10G。 可能的原因是,对于SPI闪存,最大数量为128 MBit(可以使用JEDEC采用的3字节寻址模式进行寻址的最大值)。 这里没有太多选择。 例如,您可以使用修改后的flashrom编写w25q256芯片的前半部分(大小为16 MB),例如该程序熟悉的w25q128芯片16 MB,然后将正确的引导程序(例如Breed)和带有“服务”信息的工厂部分放入该卷中(mac路由器地址,Wi-Fi校准等)。 并且已经以引导加载程序模式进行引导(如果他成功识别出微电路的整个体积),则可以从中刷新预编译的固件。 通常,您可以在将来购买闪存驱动器,然后等到ch341a的中文软件版本损坏或Flashrom完成后才显示对此类卷的支持。 总而言之,最好占用16 MB :),因为“累了,想找星星,捡起你脚下的东西。”


使用AsProgrammer非常简单,首先在“芯片”菜单中选择您的微芯片,然后单击“读取”按钮。 几分钟,然后口袋里放了一个垃圾:)


从工厂4 MB芯片读取转储

出厂全闪存包含一个引导程序,一对用于存储不同设置的部分以及固件本身。


工厂4MB固件结构

0x00000000-0x00030000:“引导加载程序”
0x00030000-0x00040000:“配置”
0x00040000-0x00050000:“工厂”
0x00050000-0x0011282a:“内核”


必须在任何HEX编辑器(我习惯于使用WinHex )中打开保存的转储文件,并在地址105720 (十进制地址,十六进制为00019CF8)处将16 MB闪存的40 00更改为00 01 (如果为80 00,则为80 00)。突然,您决定存一角钱,购买8 MB的芯片)。 我们保存修改后的固件,以备将来使用。 顺便说一句,地址105720不是某种附件的点,并且其他数字也可能在那里,特别是如果您已经尝试解锁用于openwrt固件的引导加载程序等。因此,如果什么也没有发生,则珍惜“ 40地址“ 105720”处的“ 00”不可见,我们在十六进制编辑器的菜单中搜索以十六进制值进行搜索并驱动键字节组合“ 00 00 16 40 ”。 这将导致所需的号码/地址。


寻找令人垂涎的组合00 00 16 40

为什么需要这个? 然后,通过修改后的引导程序,您可以使用更大的固件通过TFTP通过UART刷新路由器。
接下来,将保存的固件填充到从地址0(从头开始)的预先购买的较大闪存驱动器中。 如果编程成功,则将存储芯片焊接到位,然后继续下一步。 顺便说一下,在对购买的微电路进行编程时,我为用夹子夹住它感到抱歉,我不得不将其焊接到模块上:)


固件下载

第三部分,openwrt-shnaya


下一步是构建自己的openwrt版本。 如果我不需要在现有的官方(和“发烧友”)sysupgrade固件中找不到的特定软件包,则可以下载适用于路由器型号的固件的第一个可用版本,并通过已修改的大内存芯片进行加载引导加载程序或以老式方式使用上述编程器。 但是我需要在路由器的固件中嵌入一些特性不佳的软件包,因此我不得不采用一种更复杂的方法自己构建openwrt。 对于许多型号的路由器(例如,哈布雷( Habé)上的Tp-Link TL-WR741NDTp-Link TL-MR3020D-Link DIR320A1等数千个路由器),该过程都进行了很好的描述,因此,我将只限于主要步骤的简要列表(更多详细信息,请参见看看这里这里 )。


如果家里没有* nix机器,那么我们在VirtualBox上安装的第一件事就是Ubuntu x64(或其他东西)。


更新有关已安装软件包的信息
sudo apt-get更新
安装必要的。 对于Ubuntu 16.04 LTS,它看起来像这样:
sudo apt-get install build-essential subversion mercurial libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev解​​压缩


使用git clone命令将所选固件的源代码复制到您的计算机。 在剧透下-链接到不同版本的openwrt的来源。


OpenWrt和LEDE项目的Git存储库

06/18/1
git clone git://github.com/openwrt/openwrt.git -b v18.06.1
06/18/0
git clone git://github.com/openwrt/openwrt.git -b v18.06.0
1 / 17.5
git clone git://github.com/openwrt/openwrt.git -b v17.01.5
01/17/4
git clone git://github.com/openwrt/openwrt.git -b v17.01.4
01/17/3
git clone git://github.com/openwrt/openwrt.git -b v17.01.3
01/17/2
git clone git://github.com/openwrt/openwrt.git -b v17.01.2
01/17/1
git clone git://github.com/openwrt/openwrt.git -b v17.01.1
01/17
git clone git://github.com/openwrt/openwrt.git -b v17.01.0
05/15/1
git clone git://github.com/openwrt/archive.git -b v15.05.1
15.05
git clone git://github.com/openwrt/archive.git -b v15.05
07/14
git clone git://github.com/openwrt/archive.git -b v14.07
12.09
git clone git://github.com/openwrt/archive.git -b v12.09


下载的商品将部署在openwrt目录中。 我们使用cd命令进入它,使用该命令交换和更新其他组件
./scripts/feeds更新-a && ./scripts/feeds install –a
现在是修复“重要文件”的时候了,以便编译器可以正确地为我们扩大后的闪存驱动器组装固件,并且在其突然超过规定的 4 MB时不会停顿。 为此,请执行以下操作。 在目标文件/linux/ramips/dts/A5-V11.dts中包含openwrt源的下载目录中,我们将其替换为下图所示的值(我使用了nano编辑器,也可以通过mc中的F4)。


编辑* .dts文件以增加内存(对于05/15/1)

保存文件,在控制台中运行
使defconfig
并为配置文件应用标准设置,然后进行menuconfig 。 这里的主要重点是选择正确的配置文件:


目标系统:Ralink RT288x / RT3xxx
子目标:基于RT3x5x / RT5350的板
目标配置文件:A5-V11

然后-与其他路由器的openwrt程序集类似(我在上面给出了链接),我们以所需的方式修改了软件包集并保存了配置(在.config文件中)。 顺便说一句,如果您打算频繁更改配置,则可以每次备份脚本/ diffconfig.sh> mydiffconfig命令 ,因此我们每次都将配置更改保存到mydiffconfig文件中。 进行必要的配置(并选择所有必需的软件包)之后,我们使用make命令开始构建。
由于内核是自动编译的,因此您可能会发现许多来自官方存储库的软件包都不适合安装。 应该考虑到这一点,并且更经常地在所需软件包的前面设置“ M”标志。 然后可以在openwrt / bin / ramips / packages文件夹中找到这些软件包,并将其上传到某些HTTP服务器,以创建您自己的个人二十一点存储库, 以及... for OpenWRT :)。
顺便说一句,我记得以以下形式运行make命令非常方便:
使V = 99 2>&1 | tee build.log | grep -i错误
在这种情况下,编译器将有关程序集的调试信息的完整详细副本保存到openwrt目录中的build.log文件中,并且仅在屏幕上显示错误。 然后将此日志方便地附加到论坛中,以查找错误原因或提出问题。 另外,这对于识别编译器停止工作的软件包很有用。 您可以使用以下命令搜索目录来找到日志中提到的文本
grep –Hr“ TEXT” <搜索目录的路径> | 切–d:-f1 | 排序-u
但我衷心希望编译能够成功,并且不需要寻找错误。 完成此过程后,您可以在openwrt目录的bin文件夹中找到固件文件,如openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin 。 我们获取此文件,然后进入最后阶段。


第四部分,控制台


将固件收集到虚拟机的内部之后,剩下的就是将其放入路由器。 我喜欢带有UART的选件(不是我将焊盘焊接到触点镍上的全部选择)。 要进行连接,您需要USB到TTL UART适配器,或者至少需要旧Siemens的数据线。 幸运的是,我在FT232芯片上有了这样的适配器(CP2102和无处不在的CH340也适用)。 引脚排列如图所示。



UART控制台的主要和备用引脚分配

我们将触点连接到适配器,如下所示:


GND路由器→GND适配器
RX路由器→470 Ohm-1 kOhm电阻器→TX适配器
TX路由器→RX适配器

我将解释为什么需要电阻。 当我打开连接到适配器的路由器时,它挂起并开始预热。


因此,所有连接...

同时,类似


ϟr▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒A▒▒(0▒▒▒▒▒
?▒▒▒{▒F▒▒▒▒▒^▒▒B▒▒▒KӉSP@▒(Y <0▒0▒$▒@▒▒▒▒▒▒怘▒▒ff▒▒▒▒▒`▒▒▒ ▒▒▒▒▒▒▒▒▒x▒▒x▒▒▒▒▒x〜`▒▒怘▒▒▒▒▒x▒▒f▒▒▒▒▒▒▒`ff▒▒▒▒▒▒▒▒ ▒▒fx▒▒▒f〜f▒f▒▒`fxf▒▒▒▒`fx▒▒〜▒x▒f▒▒f〜f▒`▒f▒fx▒〜▒f▒xf▒〜▒▒fx ▒▒x▒▒▒xx▒▒▒▒▒▒▒▒▒xx▒▒▒xf▒▒`x▒▒▒▒▒▒fxf▒x▒▒`▒▒ff▒▒f▒▒f▒fxx▒ x▒枘▒x▒f▒▒

电阻(您可以连接任何电阻,范围从470欧姆到1 kOhm)固定所有部件。 例如,在这里 ,作者通常建议使用AduM1201数字信号隔离器芯片连接到UART进行去耦。 但是电阻对我来说已经足够了,我也希望你能这样做。


UART和AduM1201
图片

我们使用PC上的终端程序从路由器接收信号。 不知何故,我没有获得Putty的最爱,并且使用了出色的Terminal程序。 选择所需的虚拟COM端口(USB-UART所在的端口),设置参数:


速度:57600
数据位:8
奇偶校验:无
停止位:1

然后单击连接。 现在,当为路由器供电时,我们将在控制台中看到加载程序日志:


引导程序按原样记录A5-V11

U-Boot 1.1.3(2013年4月11日-00:10:51)
电路板:Ralink APSoC DRAM:32 MB
relocate_code指针:81fb4000
spi_wait_nsec:42
spi设备ID:ef 40 18 0 0(40180000)
警告:无法识别的芯片ID,请更新引导程序!
raspi_read:从:30000 len:1000
。***警告-CRC错误,使用默认环境
=============================================
Ralink UBoot版本:3.6.0.0




ASIC 5350_MP(端口5 <->无)
DRAM_CONF_FROM:引导捆绑
DRAM_TYPE:SDRAM
DRAM_SIZE:256 Mbits
DRAM_WIDTH:16位
DRAM_TOTAL_WIDTH:16位
TOTAL_MEMORY_SIZE:32 MB
闪光灯组件:SPI闪光灯
日期:2013年4月11日时间:00:10:51
=============================================
icache:设置:256,方式:4,行z:32,总数:32768
dcache:设置:128,方式:4,行z:32,总数:16384


CPU频率= 360 MHZ

估计内存大小= 32 MB
请选择操作:
1:通过TFTP将系统代码加载到SDRAM。
2:加载系统代码,然后通过TFTP写入Flash。
3:通过Flash引导系统代码(默认)。
4:Entr启动命令行界面。
7:加载引导加载程序代码,然后通过串行写入闪存。
9:加载Boot Loader代码,然后通过TFTP写入Flash。
4 3 2 1
您选择了3
0
3:通过Flash引导系统代码。


在bc050000引导映像...


raspi_read:从:50,000 len:40
。 映像名称:MIPS OpenWrt Linux-3.7.5
创建于:2013年4月11日14:41:22 UTC
映像类型:MIPS Linux内核映像(lzma压缩)
数据大小:915849字节= 894.4 kB
加载地址:80000000
切入点:80,000,000
raspi_read:从:50040 len:df989
...验证校验和...确定
解压缩内核映像...确定
没有initrd


将控制权转移到Linux(地址为80000000)...


以MB,32提供Linux memsize


启动内核...
[0.000000] Linux版本3.7.5(lich @ lich-pc)(gcc版本4.6.4 20121210(预发行)(Linaro GCC 4.6-2012.12))#2 Thu Apr 11 22:41:02 CST 2013
[0.000000]引导控制台[early0]已启用
[0.000000] CPU修订为:0001964c(MIPS 24KEc)
[0.000000] Ralink RT5350 id:1 rev:3以360.00 MHz运行
[0.000000]确定的物理RAM映射:
[0.000000]内存:02000000 @ 00000000(可用)
[0.000000]用户定义的物理RAM映射:
[0.000000]内存:02000000 @ 00000000(可用)
[0.000000]找不到initrd或为空-禁用initrd
[0.000000]区域范围:
[0.000000]正常[内存0x00000000-0x01ffffff]
[0.000000]每个节点的活动区域开始
[0.000000]早期内存节点范围
[0.000000]节点0:[内存0x00000000-0x01ffffff]
[0.000000]主指令高速缓存32kB,VIPT,4路,行大小为32字节。
[0.000000]主数据缓存16kB,4路,VIPT,无别名,行大小为32字节
[0.000000]以“区域”顺序构建了1个区域列表,移动性已分组。 总页数:8128
[0.000000]内核命令行:板= MPR-A1控制台= ttyS1,57600 mtdparts = spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(工厂)ro,896k(内核) ),2880k(rootfs),3776k @ 0x50000(固件)rootfstype = squashfs,jffs2 mem = 32M
[0.000000] PID哈希表条目:128(顺序:-3,512字节)
[0.000000] Dentry缓存哈希表条目:4096(顺序:2、16384字节)
[0.000000] Inode缓存哈希表条目:2048(顺序:1、8192字节)
[0.000000] __ex_table已排序,正在跳过排序
[0.000000]写入ErrCtl寄存器= 00023ff6
[0.000000]回读ErrCtl寄存器= 00023ff6
[0.000000]内存:29632k / 32768k可用(1969k内核代码,3136k保留,473k数据,180k初始化,0k highmem)
[0.000000] SLUB:Genslabs = 9,HWalign = 32,Order = 0-3,MinObjects = 0,CPU = 1,节点= 1
[0.000000] NR_IRQS:48
[0.000000]控制台[ttyS1]已启用,引导控制台已禁用
[0.000000]控制台[ttyS1]已启用,引导控制台已禁用
[0.010000]校准延迟回路... 239.61 BogoMIPS(lpj = 1198080)
[0.080000] pid_max:默认值:最小32768:301
[0.080000]安装缓存哈希表条目:512
[0.090000] NET:已注册的协议系列16
[0.100000] MIPS:机器为HAME MPR-A1
[0.130000] bio:在0处创建平板<bio-0>
[0.140000]切换到时钟源MIPS
[0.150000] NET:注册协议族2
[0.160000] TCP建立的哈希表条目:1024(顺序:1,8192字节)
[0.180000] TCP绑定哈希表条目:1024(顺序:0、4096字节)
[0.190000] TCP:已配置哈希表(已建立1024绑定1024)
[0.200000] TCP:注册为reno
[0.210000] UDP哈希表条目:256(顺序:0、4096字节)
[0.220000] UDP-Lite哈希表条目:256(顺序:0、4096字节)
[0.230000] NET:注册协议族1
[0.280000] squashfs:4.0版(2009/01/31)Phillip Lougher
[0.290000] jffs2:2.2版(NAND)(摘要)(LZMA)(RTIME)(CMODE_PRIORITY)©2001-2006 Red Hat,Inc.
[0.320000] msgmni已设置为57
[0.320000] io调度程序无操作已注册
[0.330000]已注册io调度程序截止日期(默认)
[0.340000]串行:8250/16550驱动程序,2个端口,IRQ共享已禁用
[0.360000] serial8250:MMIO 0x10000500(ir​​q = 13)上的ttyS0是16550A
[0.370000] serial8250:MMIO 0x10000c00(ir​​q = 20)上的ttyS1是16550A
[0.390000] ramips-spi ramips-spi.0:主机不排队,不推荐使用
[0.410000] m25p80 spi0.0:找到w25q128,预期为pm25lq032
[0.420000] m25p80 spi0.0:w25q128(16384 KB)
[0.430000]在MTD设备spi0.0上找到6个cmdlinepart分区
[0.440000]在“ spi0.0”上创建6个MTD分区:
[0.450000] 0x000000000000-0x000000030000:“ u-boot”
[0.460000] 0x000000030000-0x000000040000:“ u-boot-env”
[0.480000] 0x000000040000-0x000000050000:“工厂”
[0.490000] 0x000000050000-0x000000130000:“内核”
[0.500000] 0x000000130000-0x000000400000:“ rootfs”
[0.520000] mtd:将分区“ rootfs”设置为根文件系统
[0.530000] mtd:自动创建分区“ rootfs_data”,ofs = 380000,len = 80000
[0.550000] 0x000000380000-0x000000400000:“ rootfs_data”
[0.560000] 0x000000050000-0x000000400000:“固件”
[0.580000] ramips-wdt ramips-wdt:超时值必须为0 <timeout <= 35,使用35
[0.600000] TCP:立方注册
[0.610000] NET:注册协议家族17
[0.620000] 8021q:802.1Q VLAN支持v1.8
[0.650000] VFS:在设备31上只读挂载的根(squashfs文件系统):4。
[0.660000]释放未使用的内核内存:已释放180k
[5.100000]输入:gpio-keys-polled为/设备/平台/ gpio-keys-polled /输入/ input0
[5.210000]按钮热插拔驱动程序版本0.4.1


  • preinit-按[f]键并按[enter]进入故障安全模式

在阅读和浏览日志时,重要的是不要错过当下以及何时会有这样一行:


请选择操作:
1:通过TFTP将系统代码加载到SDRAM。
2:加载系统代码,然后通过TFTP写入Flash。
3:通过Flash引导系统代码(默认)。
4:Entr启动命令行界面。
7:加载引导加载程序代码,然后通过串行写入闪存。
9:加载Boot Loader代码,然后通过TFTP写入Flash。

您需要快速有时间按数字“ 2”。 然后,我们将看到以下内容:


您选择了2
2:系统加载Linux内核,然后通过TFTP写入Flash。
警告! 在Flash中擦除Linux,然后刻录新的Linux。 确定吗(是/否)
请输入新的/或Ctrl-C放弃
输入设备IP(10.10.10.123)==:10.10.10.123
输入服务器IP(10.10.10.3)==:10.10.10.3
输入Linux内核文件名()==:openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin

依次按“ Y”,输入,输入“ openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin”。 在后一种情况下,有必要手动注册我们的固件名称,该名称需要上载到先前启动的tftp服务器。 为此,我使用了TFTPD64程序。 激活控制台固件下载后,您需要将A5-V11连接到IP地址与控制台中指定的IP地址匹配的计算机。 顺便说一下,要直接连接(例如“ usb闪存驱动器”),我自己做了RJ45-RJ45适配器。 它们非常容易与路由器一起佩戴。



适配器RJ45-RJ45及其电路

路由器将被缝制,重启后即可执行新的战斗任务。 顺便说一句,如果无法使用控制台进行刷新,我们将返回本文的“程序”部分,并通过旧的AsProgrammer刷新openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin固件 ,但不是从地址0,而是从327680 ( !)。


另外:您不能修改字节的搜索和修改本机固件,而是用中文微芯片填充程序员,从朋友Hackpascal繁殖到新芯片中,对于我们的V5,找到的最后一个选择是品种-rt5350-hame-a5-r1163.bin 。 自从迄今为止最好的(IMHO)以来,引导加载程序即可刷新您需要的所有内容。 仍然有很多值得推荐的文章,但值得一提的是,该死的固件绝对是没有中文本地化的。 似乎技术术语很明确……但“沉淀仍然存在”。 中国人原则上不联系:(


第五部分,信息(“注释”)


在故事的结尾,我想说几句有关使我们的A5-V11使用起来更舒适的设备。
首先,这是一个用于USB端口的U形适配器 。 当与USB闪存驱动器/读卡器/ 3G-4g调制解调器/ SDR调谐器共享路由器时,必不可少的设备:)



因此适配器看起来很生动



使用上述微型路由器时,第二个重要的“里程碑”是USB集线器。 是的,USB端口的布局非常复杂。 这种无源集线器的垂直布局正推动在某些CSR8510上购买蓝牙“ 真菌 ”。 从小开始,我喜欢Octagon的工业PC的概念-MicroPC-以及它们的垂直PC / 104“ 三明治 ”。 有了提到的中心,就有机会做类似的事情(顺便说一句,如果其中一位读者在网上拍卖的范围内发现了类似的有趣的事情,请分享评论)。



Genesys Logic Inc. GL8506板上芯片



原则上,代替垂直USB端口,可以放置上述小型USB蓝牙钥匙串或微型microSD卡读取器



它看起来像一个现成的“微型路由器三明治” :)



更多微哈伯三明治






最后,最美味。 世界上有这样一个新西兰办事处CloudStore,以其Airconsole品牌的产品而闻名 。 这些设备非常不错,而且它们是唯一绝对合法且以合理的价格将各种RS232记录器连接到iOS的设备。 , , RS232. .
:)


COM/USB , Moxa*, Perle* Opengear*? AirConsole , .

, . . " 10 " :)


Airconsole Mini (69$) Hame A15 (6.9$)

图片

Airconsole Standart (79$) Hame MPR-A1 (7.9$)

图片

Airconsole XL (139$) Hame MPR-A3 (13.9$)

图片

, , . :) . " . . , . . ".


" A5-V11 Airconsole". Ham 6$ Airconsole 69$. , Zyxel Keenetic 4G II .


顺便说一句,如果读者中突然有原始AirConsol的所有者已经打开它们,我将很高兴接受照片板作为礼物并完成本文:)


好吧,原则上,我想说的都是。这里写的大部分内容都适用于其他(紧凑型)硬件,我希望它对“广泛的读者群”有用:)



ps对于本文开头提到的NEXX WT3020F,TP-Link TL-MR3020,TP-Link TL-WR703N(即,所有带有相当宽敞机箱的路由器)的所有者,下面所示的HS8836芯片上的低成本集线器可以是嵌入的非常方便的选择



以防万一,在扰流板下方显示了此处找到的电路


HS8836上的3端口中文集线器示意图

我认为,除了微型尺寸和最少的零件外,主要的优点是通过电线将带有控制器和USB端口的电路板安装好。为了嵌入到路由器中-最小程度地移动身体,尽管您仍然可以在芯片上安装铝制散热板。



从2019年开始更新:我们开始进行Walti冷却扰流板下的细节



外部冷却板

1



M1 ( 1)





M1. , , .



( ) 1,5 .





( - ) .



— :).


来自artem_kramov的补充,内容涉及更换闪光灯时WiFi损坏的问题。道德-保持完整的转储并使用wifi模块的设置传输配置部分


更多细节
: - Wi-Fi . 4 , , 8 Wi-Fi ( ). , , .
: , Config ( ), Wi-Fi. Breed, . , Ethernet, Config Wi-Fi . - , , - .

路由器上的GPIO位置(从此处获取


A5-V11 GPIO(可点击照片)
A5-V11上的GPIO接线

一个例子:
22--GPIO 22与GND相关
25+-gpio 25连接到+ 3.3V

sda,scl最好在21和26上使用(用Gnd代替电阻,放10kΩ)。 仅在这些上,当连接LCD 1602、2004并供电时,路由器才能正常启动,在其他GPIO上,则需要稍后再连接模块电源,否则路由器无法启动。

在25(w1)时使用ds1820传感器,因为 它已经通过4.7kOhm连接到+ 3.3V。

Gpio 21首先计算出他要去活塞,焊接到活塞(纳米),但是后来发现由于某种原因他正以1k欧姆的电阻坐在地上。 然后,他转到该线程,并用10kOhm的gpio 26替换了它。





使用的来源
  • http://skproj.ru/hame-mpr-a1-proshivka-openwrt-i-apgrejd-fleshki-na-16-ili-8-megabajt/?doing_wp_cron=1472313516.0620179176330566406250
  • http://w3bsit3-dns.com/forum/index.php?showtopic=884713&
  • https://github.com/nofeletru/UsbAsp-flash/releases/
  • http://forum.easyelectronics.ru/viewtopic.php?f=17&t=10947
  • http://my-embedded.blogspot.com/2013/12/mini-4g-router-rt5350f.html
  • http://eko.one.pl/?p=openwrt-gpio2
  • https://habr.com/post/238713/
  • https://nm-projects.de/2017/09/analysis-of-mini-3g4g-wifi-wireless-router-a5-v11/
  • https://tuxotronic.org/wiki/tools/flashrom/
  • http://srr.cherkessk.ru/owrt/help-owrt.html
  • https://tuxotronic.org/wiki/openwrt/rt5350/build-firmware/
  • https://mysku.ru/blog/aliexpress/27796.html
  • https://habr.com/post/247513/

重要! 现在可以在我的电报频道lab66中看到所有更新和临时注释,然后可以轻松地形成habr文章。 订阅以免期望下一篇文章,而立即了解所有研究信息:)

Source: https://habr.com/ru/post/zh-CN425281/


All Articles