Se eu via além dos outros, era porque ficava nos ombros de gigantes.
I. Newton
Acho que muitas pessoas conhecem o pequeno roteador chinês Hame A15 (ou melhor, cópias em massa dele, com TTX aprimorado em comparação com o original, são igualmente pesquisadas pelas palavras-chave roteador 3G / 4G no ebay e no aliexpress ). Hoje eu queria contar como lembrei de um roteador de US $ 6,5 e gastei US $ 20 nele. Porque E pela mesma razão pela qual as pulseiras são feitas de miçangas - para treinar micromotores e visão (os corpos dos componentes são principalmente 0402 :) Principalmente por uma questão de interesse esportivo, embora seja importante que este roteador seja de longe a minha base favorita de vários projetos (mesmo com a dificuldade de acessar o GPIO), em vez dos "populares" NEXX WT3020F, TP-Link TL-MR3020, TP-Link TL-WR703N e outros. A razão para isso é principalmente o tamanho e o formato da placa de circuito impresso, conveniente para incorporar em qualquer lugar (na foto você pode estimar o tamanho). No futuro, para evitar confusão de terminologia, vou nomear o dispositivo mostrado abaixo, como é chamado pelo wiki openwrt - A5-V11 .

O coração deste dispositivo é o SoC Ralink RT5350F de 360 MHz, a bordo, há um host USB completo, memória flash de 4 MB e SDRAM de 32 MB com uma frequência de 166 MHz (o que é estranho, a propósito, porque mesmo o antigo D-link DIR-320 a bordo tinha um DDR mais rápido). Alguns clones de clone têm 16 MB de memória e não são adequados sem aumentar a RAM para as manipulações descritas neste artigo.
Como de costume, a imagem abaixo mostra o roteador Hame A15 original.
E aqui está sua cópia melhorada em chinês (no final do artigo, você pode ver outra cópia da cópia, mas 10 vezes mais cara :).
Os internos do firmware já estavam iluminados no hub, então não vou me debruçar sobre os recursos da marcação. Detalhes dos problemas e soluções são descritos em w3bsit3-dns.com . Há muita informação, mas é incrivelmente dispersa. Espero coletar pontos-chave neste artigo, com base na experiência dos caras - “gigantes da produção de roteadores” :)
A resposta para a pergunta "por que esse (roteador) precisa de um usuário inexperiente" cita o usuário ded1971 :
Propriedades do consumidor - roteador 3G-WiFi compacto e versátil. É conveniente fazer viagens, conectar um modem 3G / 4G, organizar sua rede Wi-Fi ou usá-lo como repetidor para aprimorar o Wi-Fi, conectar a Internet a uma TV inteligente, se não houver Wi-Fi embutido. Em geral, um monte de recursos úteis por dinheiro ridículo.
Bem, uma comparação com o ES8266 onipresente e popularmente amado Parte I, Preparatória
Enquanto o roteador estava no correio, houve tempo para estudar as críticas dos felizes proprietários. Os principais problemas enfrentados pela maioria são os problemas de superaquecimento do roteador (e, consequentemente, do "chip blade") e instabilidade de energia, quando o roteador não pode ser iniciado por um longo período de tempo ("indicador" - dois LEDs estão fracamente acesos, é impossível conectar ao dispositivo via Ethernet).
Para combater o primeiro problema, foi decidido instalar um radiador no chip. Para fazer isso, encomendei pequenos radiadores de alumínio de tamanho 12x12x3 mm (exatamente o tamanho do chip). A altura de 3 mm foi escolhida porque eu queria que o radiador saliente não se agarrasse a objetos (em uma bolsa, por exemplo) e que o roteador pudesse estar deitado de forma estável sobre a mesa.
É assim que os placers dos radiadores se parecem ... Para consertar o radiador, decidi usar hot melt. Dos disponíveis em nossa área - havia apenas um Alsil-5 "único", que, apesar da condutividade térmica razoavelmente boa, não implica armazenamento de longo prazo. Seca em alguns dias (e se você tiver sorte, pode comprar já seco). Portanto, no mesmo aliexpress, foram solicitados dois tipos de adesivo hot-melt para radiadores de LED de alta potência - Halnziye HY910 e Hcbonyx HC-910 .
Adesivo de fusão a quente vigoroso chinês As análises sobre eles em fóruns especializados não são ruins, embora os especialistas ainda recomendem o uso de adesivos epóxi a quente de dois componentes, como o Thermopox 85CT, para tarefas sérias. Mas vá encontrá-lo ainda ...
Apenas por precaução, apresentarei abaixo características comparativas das condutividades térmicas do hot melt usado por mim, encontrado na Internet.
Hot melt Halnziye HY910 - Condutividade térmica 0.975W / mK
Adesivo de fusão a quente Alsil-5 - condutividade térmica 1.4-1.6W / mK
Hcbonyx HC-910 adesivo termofusível - condutividade térmica 1.7W / mK
Para instalar o radiador, tive que cortar o gabinete (inclusive para melhorar a transferência de calor). Para fazer tudo com a maior precisão possível, a primeira coisa que fiz foi desenhar as dimensões do cartão em papel grosso, fazer um buraco no chip e colocar esse modelo de papelão no estojo. Então tudo é simples - desenhe os contornos do buraco com um lápis, corte-o com uma faca de escritório e triture a lima.

Marcação e corte da caixa de plástico do radiador 12x12 Paralelamente à instalação do radiador, é necessário soldar o capacitor SMD de cerâmica ausente 10 uF 6,3 V ao roteador no circuito conversor de 3,3V. (a conselho do usuário return1 ). O local da instalação é mostrado na figura:

E aqui está uma placa com um capacitor de 10 microfarads de 6,3 V já instalado Segundo as avaliações, o consumo atual do dispositivo diminui e se torna mais estável. Presumivelmente, no conversor de 3,3V, ondulações aparecem na saída que desabilitam o processador. O capacitor suaviza essas ondulações.
Importante! Tente instalar o radiador e solde o capacitor ANTES de iniciar e operar o roteador. Caso contrário, pode acontecer que Borjomi seja tarde demais para beber ...
As pessoas resolvem o problema com a energia instalando chips de monitor de energia especializados, em vez da cadeia RC padrão do roteador, por exemplo, KR1171SP28 , DS1816 ou MAX809TTR . Gostei imediatamente da opção de usar os supervisores de energia da Maxim. As duas tarefas principais que os supervisores podem resolver são manter o controlador no estado de redefinição até que a tensão de alimentação atinja o valor definido e estabilize, ou redefinir o controlador quando a tensão de alimentação cair abaixo de um nível crítico ou quando a tensão cair repentinamente. Além das vantagens desse tipo de supervisor, note-se que nenhum componente adicional é necessário para instalar o microcircuito e, em termos de tamanho, esse dispositivo semicondutor se encaixa nos elementos removidos (sim, você deve primeiro remover os resistores e capacitores que não são mais necessários e depois passar por cima trança sobre almofadas).

A pesquisa no aliexpress não resultou em nada, mas fez uma pesquisa no catálogo CHIPiDIP, onde foram encontrados os modeladores de pulso MAX809TEUR + T ( redefinidores ) (com uma tensão de 3,08 volts), um dos quais foi soldado com sucesso ao roteador.

Definir o modelador de pulsos (redefinir) MAX809TEUR + T A propósito, não posso deixar de mencionar o ferro de solda USB chinês, sem o qual eu nunca teria mudado esse procedimento (mesmo com um elogiado micro-ondas ...).
Para não desperdiçar um ferro de solda, ao mesmo tempo, decidi soldar um bloco de contato nas almofadas de contato do console UART (calcanhares) para simplificar a conexão com os fios duplos dos projetistas do Arduino. Almofadas Almofadas idealmente combinadas com um passo de contato de 2 mm (2,54 mm comuns já são largos). Estes são , por exemplo. Para tornar mais conveniente a solda, com a ajuda de uma pinça, dobrei as extremidades dos contatos com a letra G e estanhei os pontos na placa do roteador.
Preparando o console do UART Depois, bastava instalar o bloco nos calcanhares e aquecer levemente a junção até a solda derreter. É importante não exagerar (o que é fácil de fazer com um ferro de soldar poderoso), caso contrário os leitões podem simplesmente cair devido ao superaquecimento. Nesse caso, a imagem mostra os pontos de teste de backup onde você pode soldar.

A propósito, você pode soldar os contatos com outro método, mas o caso não pode ser fechado assim.

Com isso, a parte preparatória terminou e a parte principal começou.
Parte Dois, "Programador"
Como mencionei no início do artigo, o roteador tem pouca memória, apenas 4 MB. Obviamente, alguém pode se lembrar do fato de que "640 KB deve ser suficiente para todos". Mas, depois de passar uma semana tentando inserir todos os pacotes necessários (e existem 8 MB (!)) No openwrt auto-montado do D-Link DIR-320, agora tenho certeza de que não vale a pena economizar em memória. Portanto, foi decidido mudar o flash para um mais amplo e, ao mesmo tempo, com um custo razoável (para não ser mais caro que o próprio roteador). São necessários chips com freqüência efetiva (taxa de clock SPI) de pelo menos 100 MHz e tensão de alimentação de 3,3 V. Dos fabricantes - Winbond ou qualquer outro (En = Eon, Mx = Macronix, Pm = PMC, At = Atmel). Pelo que a openwrt.org aconselha são W25Q128BV , MX25L128 (35F), S25FL128P, S25FL129P, GD25Q128C, GD25Q128CSIG. O número 128 na marcação indica que o volume da unidade flash é de 16 MB (128Mbit = 16Mb). A escolha do tamanho nominal deve-se ao fato de que um programador chinês barato de chips de memória CH341A 24/25 (sobre ele abaixo) pode trabalhar com esse volume sem dançar com um pandeiro. Para os fãs, posso dizer que 32 MB podem ser soldados (por exemplo, W25Q256FV, MX25L25635F, N25Q256A, MX25L25645GM2I-10G e até 64 MB (MX25L51245G, MT25QL512AB). No entanto, gostaria de observar que os preços para memória estão longe de serem humanos para os módulos de 64 MB. Observarei que falando sobre chips de memória SOMENTE no pacote SOP8, que é o mais conveniente para a soldagem, é claro que você pode usar chips nos gabinetes WSON8 com almofadas de contato em vez de pernas, mas a solda consome muito tempo e o resultado pode não corresponder às expectativas.
Você pode piscar um chip de memória de várias maneiras diferentes, dependendo do que está disponível:
a) Há um diodo / capacitor e uma porta paralela (o programador mais simples) - examinamos as instruções de firmware no site tcheco ou em russo .
Portanto, esse programador mais simples de um conector LPT e alguns detalhes parece na vida b) Existe algum Arduino (Pro, Micro, Nano etc.) - prepararemos a partir deles um programador para nossos flash drives SPI, de acordo com a receita a seguir.
c) Se houver um Raspberry Pi - veja aqui
d) Existe um programador USBASP "popular" (que já foi escrito em Habré) - estamos preparando-o de acordo com a receita nº 2 .
e) Há apenas um desejo e um pouco de dinheiro - compramos no aliexpress um programador chinês CH341A para flash 24/25 SPI e silenciosamente começamos a trabalhar.
A própria unidade flash está conectada ao (s) programador (es) da seguinte forma:
Pinagem do chip de memória A unidade flash pode ser soldada e conectada aos pads / adaptadores do programador, ou você pode soldar os fios Dupont já mencionados do Arduino e conectar os fios ao programador. O "funcionamento" do flash são os contatos MISO , MOSI , CLK , CS , VCC e GND . Se a programação for realizada sem remover o microcircuito da placa, é melhor dessoldar e aumentar levemente o contato VCC sobre o plano da placa por um tempo. Depois de terminar o trabalho, pressione o pé na placa e solde-o.
Como não queria procurar uma porta LPT, decidi agir na última opção e) e comprar um pedaço de ferro adicional no meu parque. Essa peça é chamada CH341A e, curiosamente, é um programador baseado no chip CH341, por trás da criação da megacorporação chinesa "amplamente conhecida" Jiangsu QinHeng Ltd. :)
Diagrama do circuito do programador Ao solicitar apenas um programador, recomendo fortemente que você compre um adaptador de caixas SOP8 / SOIC8 para caixas DIP e um clipe para trabalhar com microcircuitos.
Você não pode obter economias escassas, mas compre imediatamente um kit pronto, composto por um programador e todos os adaptadores necessários; além dos dois adaptadores mencionados acima, você também terá um adaptador para programar chips de 1,8 V.
Pela minha própria experiência, direi que o clipe do prendedor de roupa funciona todas as vezes e, muito provavelmente, o chip terá que ser retirado da solda e colocado no adaptador SOP8-DIP ou mesmo soldado às almofadas do próprio programador.
Além disso : finalmente meu adaptador veio, ou como é chamado corretamente de adaptador ZIF SOP8-DIP8 150 mil . Este adaptador é adequado para microcircuitos com uma largura de caixa de 150mil, um passo de pinos de 1,27 mm. Além de 150 mil, pode haver 200 mil, por isso é importante prestar atenção nisso ao fazer pedidos em leilões (eu tenho microchips e o mesmo, portanto, existem dois adaptadores).
Como distinguir visualmente entre o adaptador ZIF 150 e 200 mil A peça é incrivelmente conveniente, o microcircuito é preso facilmente, naturalmente e com muita clareza (o sistema se assemelha a um alicate). Para fazer isso, basta clicar na parte superior elástica do gabinete, colocar o chip nas áreas expostas e soltar essa parte do gabinete de volta. Os contatos superiores com mola se estendem quando liberados e o microcircuito se prende automaticamente (foto para maior clareza, porque o microcircuito de 200 mil está no adaptador de 150 mil, por isso não o chutei, prendi na mão). Em seguida, instalamos no programador, procurando onde temos o pé 1 (um círculo no chip). Acontece assim:

Imagens mais bonitas do SOIC8 SOP8 no adaptador DIP8 Filmei um chip de memória nativo usando uma estação de solda a ar quente e, para aqueles que não possuem esse equipamento, recomendo o uso do método da liga Rose . Após o trabalho, remova os restos da liga Rose com uma trança da placa e dos microcircuitos, longe do pecado.
Conectamos o microcircuito removido ao programador (para quem, como e como é o resultado). Eu estava com preguiça de soldar, sinceramente tentei apertar o clipe, como resultado, as pernas estavam muito achatadas pela mola do clipe. Mas não pretendia soldar o flash de 4 MB, mas um bom contato deve garantir uma leitura suave. E assim aconteceu. Nota bene para quem solda o microcircuito - observe cuidadosamente os números nas placas adaptadoras e solda de acordo com eles. No caso de um clipe, o fio vermelho no laço da chave está no número da perna 1.

Capturado e com sucesso de ... Depois de lidar com o ferro, você precisa lidar com o software. Como já escrevi, em um hub esse programador aparece periodicamente em artigos . É claro que funciona sem problemas com todos os sistemas operacionais modernos (por exemplo, os drivers do Windows 10 são automaticamente retirados da rede e, no Linux, eles estão no kernel há vários anos). Mas, mas você nunca sabe o que acontece, aqui você pode encontrar drivers (para o modo Serial / Paralelo) como arquivos separados por precaução. Para programação no Windows, a autoria de software chinesa de um determinado SkyGz é mais frequentemente usada. Para Linux, existem projetos abertos ch341prog (SPI) e ch341eepromtool (I2C), você pode usar o flashrom "folk". Como eu uso o Windows, e as críticas sobre o "programa da China" para a maioria dos usuários não são muito positivas (especialmente sobre as novas versões de 1,28 ... 1,30), para que o destino não seja tentado, o chip foi lido usando um programador russo simples e confiável AsProgrammer versão 1.4.0 . A propósito, se algo de repente não gostar de algo / não estiver claro, ou por exemplo, você precisar adicionar um novo microcircuito, poderá escrever facilmente no tópico "suporte técnico" e obter feedback rápido.
Por que NÃO vale a pena comprar memória flash com mais de 16 MBPermitirei-me uma pequena digressão e explicarei minha relutância em instalar uma unidade flash de 32 MB (a diferença de preço de 16 MB não é crítica). O fato é que nem nos programas chineses (versões 1.29 ou 1.30), nem no mencionado suporte AsProgrammer para microchips ala W25Q256FV, MX25L25635F, N25Q256A, MX25L25645GM2I-10G. Talvez a razão para isso seja que, para um flash SPI, o valor máximo seja de 128 MBit (o máximo que pode ser endereçado com o modo de endereçamento de 3 bytes adotado pelo JEDEC). E aqui não há tantas opções. Por exemplo, você pode escrever com o flashrom modificado a primeira metade do chip w25q256 (tamanho de 16 MB), como o chip w25q128 familiar a este programa com 16 MB e colocar o gerenciador de inicialização correto (Breed, por exemplo) e as seções de fábrica com informações de "serviço" nesse volume (mac Endereço do roteador, calibração de wi-fi, etc.). E já tendo inicializado no modo bootloader (em caso de reconhecimento bem-sucedido por ele de todo o volume do microcircuito), seria possível exibir o firmware compilado com antecedência a partir dele. Geralmente, você pode comprar unidades flash para o futuro e aguardar até que o suporte para esses volumes apareça em versões quebradas do software chinês para ch341a ou quando o flashrom estiver concluído. Para resumir, é melhor levar 16 MB :) porque "cansado de alcançar as estrelas, pegue o que está sob seus pés".
Trabalhar com o AsProgrammer é extremamente simples, primeiro selecione seu microchip no menu "Chip" e depois clique no botão "Ler". Alguns minutos e um depósito no nosso bolso :)
Ler dump do chip de 4 MB da fábrica O flash completo de fábrica consiste em um gerenciador de inicialização, um par de seções para armazenar diferentes configurações e o próprio firmware.
Estrutura de firmware de fábrica de 4 MB0x00000000-0x00030000: "Carregador de inicialização"
0x00030000-0x00040000: "Configuração"
0x00040000-0x00050000: "Fábrica"
0x00050000-0x0011282a: "Kernel"
O arquivo de despejo salvo deve ser aberto em qualquer editor HEX (estou acostumado a usar o WinHex ) e no endereço 105720 (o endereço em decimal, em hexadecimal será 00019CF8), alteramos 40 00 para 00 01 para 16 MB flash (bem, ou 80 00 se de repente, você decide economizar um centavo e comprar um chip de 8 MB). Salvamos o firmware modificado para uso futuro. A propósito, o endereço 105720 não é um ponto de algum tipo de anexo e outros números podem estar localizados lá, especialmente se você já tentou desbloquear o gerenciador de inicialização para o firmware openwrt, etc. Portanto, se nada acontecer, o valor estimado “40 00 "no endereço 105720 não está visível, procuramos no menu do editor hexadecimal uma busca por valores HEX e acionamos a combinação de bytes de teclas" 00 00 16 40 "lá. Isso levará aos números / endereços desejados.
Encontrar a combinação desejada 00 00 16 40 Por que isso foi necessário? E então, para que o carregador de inicialização modificado permita que você faça o flash do roteador via UART via TFTP, usando um firmware maior.
Em seguida, preencha o firmware salvo em uma unidade flash maior pré-adquirida, começando no endereço 0 (desde o início). No caso de uma programação bem-sucedida, solde o chip de memória no lugar e passe para a próxima etapa. A propósito, ao programar um microcircuito adquirido, senti pena de beliscar com um clipe e tive que soldá-lo no bloco :)
Parte Três, openwrt-shnaya
O próximo passo é criar sua própria versão do openwrt. Se eu não precisasse de alguns pacotes específicos que não podem ser encontrados no firmware sysupgrade oficial (e "de entusiastas") existente, basta baixar a primeira versão disponível do firmware para o seu modelo de roteador e carregá-lo através dos chips de memória grandes JÁ modificados gerenciador de inicialização ou da maneira antiga de usar o programador acima. Mas eu preciso incorporar alguns pacotes não característicos no firmware do meu roteador, então tive que seguir um caminho mais complicado e criar o openwrt para mim. Este procedimento é bastante bem descrito para muitos modelos de roteadores (por exemplo, para Tp-Link TL-WR741ND em Habré, Tp-Link TL-MR3020 , D-Link DIR320A1 , milhares deles ...), portanto, vou me limitar a uma breve lista das principais etapas (mais detalhes podem ser encontrados). olhe aqui e aqui ).
Se não houver uma máquina * nix em casa, a primeira coisa que instalamos no VirtualBox é o Ubuntu x64 (ou algo assim).
Atualizando informações sobre pacotes instalados
sudo apt-get update
Instale o necessário. Para o Ubuntu 16.04 LTS, é assim:
sudo apt-get install subversão essencial para compilação libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev descompactar
Copie o código-fonte do firmware selecionado para o seu computador usando o comando git clone . Sob o spoiler - links para as fontes de diferentes versões do openwrt.
Repositórios Git de projetos OpenWrt e LEDE18/06/1
git clone git: //github.com/openwrt/openwrt.git -b v18.06.1
18/06/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
17/01/4
git clone git: //github.com/openwrt/openwrt.git -b v17.01.4
17/01/3
git clone git: //github.com/openwrt/openwrt.git -b v17.01.3
17/01/2
git clone git: //github.com/openwrt/openwrt.git -b v17.01.2
17/01/1
git clone git: //github.com/openwrt/openwrt.git -b v17.01.1
17/01
git clone git: //github.com/openwrt/openwrt.git -b v17.01.0
15/05/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
14/07
git clone git: //github.com/openwrt/archive.git -b v14.07
12,09
git clone git: //github.com/openwrt/archive.git -b v12.09
A mercadoria baixada será implantada no diretório openwrt. Entramos nele com o comando cd , trocamos e atualizamos componentes adicionais com o comando
Atualização de ./scripts/feeds -a && ./scripts/feeds install –a
Agora é a hora de corrigir os "arquivos importantes" para que o compilador possa montar corretamente o firmware da nossa unidade flash ampliada e não parar se, de repente, exceder os 4 MB prescritos . Para fazer isso, faça o seguinte. No diretório baixado com fontes openwrt no arquivo target / linux / ramips / dts / A5-V11.dts, substituímos pelos valores indicados na figura abaixo (usei o editor nano, também é possível através de F4 em mc).

Salve o arquivo, execute no console
make defconfig
e aplique as configurações padrão para o perfil e faça menuconfig . Aqui, o ponto principal é escolher o perfil certo:
Sistema de destino: Ralink RT288x / RT3xxx
Subtarget: placas baseadas em RT3x5x / RT5350
Perfil do Alvo: A5-V11
e então - por analogia com o assembly openwrt para outros roteadores (forneci os links acima), modificamos o conjunto de pacotes da maneira que precisamos e salvamos a configuração (no arquivo .config ). A propósito, se você planeja alterar as configurações com frequência, é possível fazer backup dos comandos scripts / diffconfig.sh> mydiffconfig a cada vez, para salvar as alterações de configuração no arquivo mydiffconfig a cada vez. Depois de fazer a configuração necessária (e selecionar todos os pacotes necessários), iniciamos a construção com o comando make .
Devido à auto-compilação do kernel, você pode achar que muitos pacotes de repositórios oficiais não são adequados para instalação. Isso deve ser levado em consideração e, com mais frequência, defina a bandeira "M" na frente da embalagem desejada. Esses pacotes podem ser encontrados na pasta openwrt / bin / ramips / packages e carregados em algum servidor HTTP para criar seu próprio repositório pessoal de blackjack e ... para o OpenWRT :).
A propósito, lembrei que é muito conveniente executar o comando make no seguinte formato:
faça V = 99 2> & 1 | tee build.log | erro grep -i
Nesse caso, o compilador salva uma cópia detalhada completa das informações de depuração sobre o assembly no arquivo build.log no diretório openwrt e exibe apenas erros na tela. Em seguida, esse log é convenientemente anexado aos fóruns para encontrar a causa do erro ou fazer uma pergunta. Além disso, é ótimo para identificar pacotes nos quais o compilador para de funcionar. Você pode encontrar o texto mencionado no log pesquisando o diretório usando o comando
grep –Hr "TEXT" <caminho para o diretório de pesquisa> | cut –d: -f1 | classificar -u
Mas sinceramente espero que a compilação seja bem-sucedida e não seja necessário procurar erros. Após a conclusão do processo, você poderá encontrar os arquivos de firmware na pasta bin do diretório openwrt, algo como openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin . Pegamos esse arquivo e vamos para a fase final.
Parte Quatro, Console
Depois que o firmware é coletado nas entranhas da máquina virtual, resta apenas colocá-lo no roteador. Gosto da opção com o UART (não é por acaso que soldei o pad aos níquel de contato). Para conectar, você precisa de um adaptador USB para TTL UART ou de pelo menos um cabo de dados de uma Siemens antiga. Felizmente, eu tinha esse adaptador no chip FT232 (o CP2102 e o onipresente CH340 também são adequados). A pinagem da pinagem é mostrada na foto.

Pinagem primária e de backup para o console UART Conectamos os contatos ao adaptador da seguinte maneira:
Roteador GND → adaptador GND
Roteador RX → resistor de 470 Ohm-1 kOhm → adaptador TX
Roteador TX → Adaptador RX
Vou explicar por que um resistor é necessário. Quando liguei o roteador conectado ao adaptador, ele travou e começou a aquecer.
Então, tudo conectado ... Ao mesmo tempo, algo como
ϟr▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒A▒▒ (0▒▒▒▒▒
? ▒▒▒ {▒F▒▒▒▒▒ ^ ▒▒B▒▒▒KӉSP @ ▒ (Y <0▒0▒ $ ▒ @ ▒▒▒ ▒▒▒ 怘ff▒▒`▒▒ ▒▒▒▒▒▒▒▒▒x▒▒x▒▒▒▒▒x ~ `▒▒ 怘x▒▒f▒▒▒▒▒f▒▒`ff▒▒▒▒▒▒▒ Fx▒▒▒f ~ f▒f▒▒`fxf▒▒▒▒`fx▒▒ ~ ▒x▒f▒▒f ~ f▒`▒f▒fx▒ ~ ▒f▒xf▒ ~ ▒▒fx ▒▒x▒▒▒xx▒▒▒▒xx▒▒▒▒x▒▒▒xf▒▒`x▒▒▒▒▒▒fxf▒x▒▒`▒▒▒f▒▒f▒▒f▒fxx▒ x▒ 枘 ▒x▒f▒▒
O resistor (você pode conectar qualquer um, na faixa de 470 Ohms a 1 kOhm) consertou tudo. E aqui , por exemplo, o autor geralmente recomenda o uso do chip isolador de sinal digital AduM1201 para conectar-se ao UART para desacoplamento. Mas o resistor foi suficiente para mim, o que também desejo para você.
Recebemos o sinal do roteador usando o programa do terminal no PC. De alguma forma, não obtive sucesso com o favorito de Putty e uso o excelente programa Terminal . Selecione a porta COM virtual desejada (na qual nosso USB-UART fica), defina os parâmetros:
Velocidade: 57600
Bits de dados: 8
Paridade: Nenhuma
Bits de parada: 1
E clique em Conectar. Agora, quando a energia for fornecida ao roteador, veremos os logs do carregador no console:
O carregador de inicialização registra o A5-V11 como estáU-Boot 1.1.3 (11 de abril de 2013 - 00:10:51)
Placa: Ralink APSoC DRAM: 32 MB
relocate_code Ponteiro em: 81fb4000
spi_wait_nsec: 42
ID do dispositivo spi: ef 40 18 0 0 (40180000)
Aviso: ID de chip não reconhecido, atualize o gerenciador de inicialização!
raspi_read: from: 30000 len: 1000
. *** Aviso - CRC ruim, usando o ambiente padrão
==============================================
Ralink UBoot Versão: 3.6.0.0
ASIC 5350_MP (Porta5 <-> Nenhuma)
DRAM_CONF_FROM: Correção de inicialização
DRAM_TYPE: SDRAM
DRAM_SIZE: 256 Mbits
DRAM_WIDTH: 16 bits
DRAM_TOTAL_WIDTH: 16 bits
TOTAL_MEMORY_SIZE: 32 MBytes
Componente Flash: SPI Flash
Data: 11 de abril de 2013 Hora: 00: 10: 51
==============================================
icache: sets: 256, ways: 4, linesz: 32, total: 32768
dcache: sets: 128, ways: 4, linesz: 32, total: 16384
A frequência da CPU = 360 MHZ
estimar o tamanho da memória = 32 Mbytes
Por favor, escolha a operação:
1: Carrega o código do sistema na SDRAM via TFTP.
2: Carregue o código do sistema e grave no Flash via TFTP.
3: Inicialize o código do sistema via Flash (padrão).
4: Interface de linha de comando de inicialização Entr.
7: Carregue o código do Boot Loader e grave no Flash via Serial.
9: Carregue o código do carregador de inicialização e grave no Flash via TFTP.
4 3 2 1
Você escolheu 3
0 0
3: Código do sistema de inicialização do sistema via Flash.
A inicializar imagem em bc050000 ...
raspi_read: from: 50,000 len: 40
. Nome da imagem: MIPS OpenWrt Linux-3.7.5
Criado: 2013-04-11 14:41:22 UTC
Tipo de imagem: Imagem do Kernel do MIPS Linux (lzma compactado)
Tamanho dos dados: 915849 Bytes = 894,4 kB
Endereço de carga: 80000000
Ponto de Entrada: 80.000.000
raspi_read: from: 50040 len: df989
... Verificando soma de verificação ... OK
Descompactando a imagem do kernel ... OK
Sem initrd
Transferindo controle para Linux (no endereço 80000000) ...
Dando linux memsize em MB, 32
Iniciando o kernel ...
[0.000000] Linux versão 3.7.5 (lich @ lich-pc) (versão gcc 4.6.4 20121210 (pré-lançamento) (Linaro GCC 4.6-2012.12)) # 2 qui 11 abr abr 22:41:02 CST 2013
[0.000000] console de inicialização [early0] ativado
[0.000000] A revisão da CPU é: 0001964c (MIPS 24KEc)
[0.000000] Ralink RT5350 id: 1 rev: 3 rodando a 360,00 MHz
[0.000000] Mapa físico determinado da RAM:
[0.000000] memória: 02000000 @ 00000000 (utilizável)
[0.000000] Mapa de RAM física definido pelo usuário:
[0.000000] memória: 02000000 @ 00000000 (utilizável)
[0.000000] Initrd não encontrado ou vazio - desativando o initrd
[0,000000] Faixas de zona:
[0.000000] Normal [mem 0x00000000-0x01ffffff]
[0.000000] Início da zona móvel para cada nó
[0.000000] Intervalos de nós de memória anteriores
[0.000000] nó 0: [mem 0x00000000-0x01ffffff]
[0.000000] Cache de instruções principal 32kB, VIPT, de 4 vias, tamanho de linha 32 bytes.
[0.000000] Cache de dados primário 16kB, 4 vias, VIPT, sem aliases, tamanho de linha 32 bytes
[0.000000] Criou 1 zonelists na ordem da Zona, agrupamento de mobilidade. Total de páginas: 8128
[0.000000] Linha de comando do kernel: board = console MPR-A1 = ttyS1.57600 mtdparts = spi0.0: 192k (u-boot) ro, 64k (u-boot-env) ro, 64k (fábrica) ro, 64k (fábrica) ro, 896k (kernel ), 2880k (rootfs), 3776k @ 0x50000 (firmware) rootfstype = squashfs, jffs2 mem = 32M
[0.000000] Entradas da tabela de hash PID: 128 (ordem: -3, 512 bytes)
[0.000000] Entradas da tabela de hash do cache de dentry: 4096 (ordem: 2, 16384 bytes)
[0.000000] Entradas da tabela de hash de cache de inode: 2048 (ordem: 1, 8192 bytes)
[0.000000] __ex_table já classificado, ignorando a classificação
[0.000000] Gravando o registro ErrCtl = 00023ff6
[0.000000] Registro ErrCtl Readback = 00023ff6
[0.000000] Memória: 29632k / 32768k disponível (código do kernel 1969k, 3136k reservados, 473k dados, 180k init, 0k highmem)
[0.000000] SLUB: Genslabs = 9, HWalign = 32, Order = 0-3, MinObjects = 0, CPUs = 1, Nós = 1
[0.000000] NR_IRQS: 48
[0.000000] console [ttyS1] ativado, console de inicialização desativado
[0.000000] console [ttyS1] ativado, console de inicialização desativado
[0.010000] Calibrando o loop de atraso ... 239,61 BogoMIPS (lpj = 1198080)
[0,080000] pid_max: padrão: 32768 mínimo: 301
[0.080000] Entradas da tabela de hash do cache de montagem: 512
[0.090000] NET: família de protocolos registrados 16
[0.100000] MIPS: a máquina é HAME MPR-A1
[0,130000] bio: crie uma laje <bio-0> em 0
[0.140000] Mudando para fontes de relógio MIPS
[0.150000] NET: família de protocolos registrados 2
[0.160000] Entradas da tabela de hash estabelecidas pelo TCP: 1024 (ordem: 1, 8192 bytes)
[0.180000] Entradas da tabela de hash de ligação TCP: 1024 (ordem: 0, 4096 bytes)
[0.190000] TCP: tabelas de hash configuradas (ligação 1024 estabelecida 1024)
[0.200000] TCP: reno registrado
[0.210000] Entradas da tabela de hash UDP: 256 (ordem: 0, 4096 bytes)
[0.220000] Entradas da tabela de hash UDP-Lite: 256 (ordem: 0, 4096 bytes)
[0.230000] NET: família de protocolos registrados 1
[0.280000] squashfs: versão 4.0 (31/01/2009) Phillip Lougher
[0.290000] jffs2: versão 2.2 (NAND) (RESUMO) (LZMA) (RTIME) (CMODE_PRIORITY) © 2001-2006 Red Hat, Inc.
[0.320000] msgmni foi definido como 57
[0,320000] agendador io noop registrado
[0,330000] prazo do agendador io registrado (padrão)
[0.340000] Serial: driver 8250/16550, 2 portas, compartilhamento de IRQ desativado
[0,360000] serial8250: ttyS0 no MMIO 0x10000500 (irq = 13) é um 16550A
[0,370000] serial8250: ttyS1 no MMIO 0x10000c00 (irq = 20) é um 16550A
[0.390000] ramips-spi ramips-spi.0: o mestre não está na fila, está obsoleto
[0.410000] m25p80 spi0.0: encontrado w25q128, esperado pm25lq032
[0.420000] m25p80 spi0.0: w25q128 (16384 Kbytes)
[0,430000] partições de 6 cmdlinepart encontradas no dispositivo MTD spi0.0
[0.440000] Criando 6 partições MTD no "spi0.0":
[0.450000] 0x000000000000-0x000000030000: "u-boot"
[0.460000] 0x000000030000-0x000000040000: "u-boot-env"
[0.480000] 0x000000040000-0x000000050000: "fábrica"
[0.490000] 0x000000050000-0x000000130000: "kernel"
[0.500000] 0x000000130000-0x000000400000: "rootfs"
[0.520000] mtd: partição "rootfs" definida como sistema de arquivos raiz
[0.530000] mtd: partição "rootfs_data" criada automaticamente, ofs = 380000, len = 80000
[0.550000] 0x000000380000-0x000000400000: "rootfs_data"
[0.560000] 0x000000050000-0x000000400000: "firmware"
[0.580000] ramips-wdt ramips-wdt: o valor do tempo limite deve ser 0 <timeout <= 35, usando 35
[0.600000] TCP: cúbico registrado
[0.610000] NET: família de protocolos registrados 17
[0.620000] 8021q: suporte a VLAN 802.1Q v1.8
[0.650000] VFS: raiz montada (sistema de arquivos squashfs) somente leitura no dispositivo 31: 4.
[0.660000] Liberando memória do kernel não utilizada: 180k liberados
[5.100000] input: gpio-keys-polled como / devices / platform / gpio-keys-polled / input / input0
[5.210000] Botão Driver Hotplug versão 0.4.1
- preinit - Pressione a tecla [f] e pressione [enter] para entrar no modo à prova de falhas
Ao ler e examinar os logs, é importante não perder o momento e quando haverá uma linha assim:
Por favor, escolha a operação:
1: Carrega o código do sistema na SDRAM via TFTP.
2: Carregue o código do sistema e grave no Flash via TFTP.
3: Inicialize o código do sistema via Flash (padrão).
4: Interface de linha de comando de inicialização Entr.
7: Carregue o código do Boot Loader e grave no Flash via Serial.
9: Carregue o código do carregador de inicialização e grave no Flash via TFTP.
Você precisa ter tempo para pressionar rapidamente o número "2". Então veremos o seguinte:
Você escolheu 2
2: System Load Linux Kernel, em seguida, grave no Flash via TFTP.
Atenção !!! Apague o Linux no Flash e grave um novo. Você tem certeza? (S / N)
Insira novos / ou Ctrl-C para descartar
IP do dispositivo de entrada (10.10.10.123) ==: 10.10.10.123
IP do servidor de entrada (10.10.10.3) ==: 10.10.10.3
Nome do arquivo do kernel do Linux de entrada () ==: openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin
Pressione "Y" sequencialmente, digite, digite "openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin". Neste último caso, será necessário registrar manualmente o nome do nosso firmware, que precisará ser carregado no servidor tftp lançado anteriormente. Eu usei o programa TFTPD64 para esse fim. Após ativar o download do firmware do console, você precisa conectar o A5-V11 a um computador cujo endereço IP corresponda ao especificado no console. A propósito, para conectar diretamente (ala "usb flash drive"), eu mesmo fiz os adaptadores RJ45-RJ45. Eles são muito convenientes de usar com um roteador.

Adaptadores RJ45-RJ45 e seu circuito O roteador será costurado e, após a reinicialização, estará pronto para realizar novas missões de combate. A propósito, se não foi possível atualizar com o console, retornamos à parte "program" do artigo e atualizamos o firmware openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin através do bom e velho AsProgrammer, mas não do endereço 0, mas do 327680 ( !).
Além disso: você não pode mexer na busca de bytes e modificar o firmware nativo, mas preencha o programador com um microchip chinês Breed de um amigo Hackpascal no novo chip. Para o nosso V5, a última opção encontrada é breed-rt5350-hame-a5-r1163.bin . E já deste melhor (IMHO) até à data, o carregador de inicialização para piscar tudo o que você precisa. Ainda existem todos os tipos de itens dignos de um artigo separado, MAS, mas caramba, o firmware não tem absolutamente nenhuma localização, apenas em chinês. Parece que os termos técnicos são claros ... Mas o "sedimento permaneceu". Os chineses, em princípio, não fazem contato :(
Parte Cinco, Informações ("Nota")
No final da história, gostaria de dizer algumas palavras sobre os dispositivos que tornam o uso do nosso A5-V11 mais confortável.
Primeiro de tudo, este é um adaptador em forma de U para uma porta USB. Um dispositivo indispensável, ao compartilhar um roteador com uma unidade flash USB / leitor de cartão / modem 3G-4g / sintonizador SDR finalmente :)

Portanto, os adaptadores parecem ativos O segundo "marco" importante ao trabalhar com o mini-roteador descrito é um hub USB. Sim, com um layout muito complicado de portas USB. O layout vertical deste hub passivo está impulsionando a compra do " fungo " Bluetooth em alguns CSR8510 . Desde a infância, gosto do conceito de PCs industriais da Octagon - MicroPC - e seus “ sanduíches ” verticais para PC / 104. Com o hub mencionado, há uma oportunidade de fazer algo semelhante (a propósito, se um dos leitores encontrar algo semelhante interessante nas extensões dos leilões on-line - compartilhe nos comentários).

Chip Genesys Logic Inc. GL8506 a bordo

Em princípio, em vez de uma porta USB vertical, é bem possível colocar o pequeno chaveiro USB-Bluetooth descrito acima ou um leitor de cartão microSD miniatura .

E parece um "sanduíche microrrouter" pronto :)

Mais sanduíches de micro-habr E, finalmente, o mais delicioso. Existe um escritório na Nova Zelândia CloudStore no mundo que é conhecido por seus produtos com a marca Airconsole . Esses dispositivos são bons, entre outras coisas, e o fato de serem os únicos absolutamente legalmente e por um preço razoável a conectar todos os tipos de registradores RS232 ao 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 .
A propósito, se de repente, entre os leitores, houver proprietários do AirConsol original que já os abriram, terei prazer em aceitar painéis de fotos como presente e concluir o artigo :)
Bem, em princípio, tudo o que eu queria dizer. Muito do que está escrito aqui é aplicável a outro hardware (compacto) e espero que seja útil para o "amplo público leitor" :)
ps Para os proprietários do NEXX WT3020F, TP-Link TL-MR3020, TP-Link TL-WR703N (ou seja, todos os roteadores com uma caixa bastante espaçosa) mencionados no início do artigo, um hub de baixo custo no chip HS8836 mostrado abaixo pode ser uma opção muito conveniente para incorporar :
Por precaução, o circuito encontrado aqui é mostrado sob o spoiler.
Diagrama esquemático de um hub chinês de 3 portas no HS8836 A principal vantagem, na minha opinião, além do tamanho miniatura e do mínimo de peças, é a montagem da placa com o controlador e as portas USB via fios. Para incorporar no roteador - um mínimo de movimentos do corpo, embora você ainda possa instalar uma placa de radiador de alumínio no chip.
Atualização a partir de 2019 : temos as mãos no Walti Cooling . Detalhes sob o spoiler
Placa de refrigeração externaPrimeiro, encontrei e cortei uma placa de alumínio adequada com uma espessura de 1 mm
Furei os furos para os parafusos M1 e cortei a rosca na placa (estava esperando especialmente a torneira no M1)
Tentou apertar ainda mais as porcas M1. Segurando no meu bolso, não gostei, então recusei essa ideia e simplesmente afiei as pontas salientes dos parafusos.
( ) 1,5 .
—
( - ) .
— :).
Adição de artem_kramov em relação a wifi quebrado ao substituir o flash. Moral - mantenha um despejo completo e transfira a seção de configuração com as configurações do módulo wifi
Mais detalhes: - Wi-Fi . 4 , , 8 Wi-Fi ( ). , , .
: , Config ( ), Wi-Fi. Breed, . , Ethernet, Config Wi-Fi . - , , - .
Localização GPIO no roteador (retirada daqui )
A5-V11 GPIO (foto clicável)Fiação GPIO no A5-V11
Um exemplo:
22- - gpio 22 está vinculado a Gnd
25+ - gpio 25 está ligado a + 3.3V
sda, scl é melhor usar nos 21 e 26 (substitua os resistores por Gnd, coloque 10kΩ). Somente nesses dispositivos, com o LCD 1602, 2004 conectado e a fonte de alimentação, o roteador inicia normalmente; em outros gpios, é necessário conectar a alimentação do módulo um pouco mais tarde, caso contrário, o roteador não inicia.
Em 25 (w1), use o sensor ds1820, porque ele já está vinculado a + 3.3V a 4.7kOhm.
Gpio 21 primeiro calculou que estava saindo para o pistão, soldado ao pistão (nano), mas depois descobriu-se que ele estava sentado no chão por um ohm de 1k por algum motivo. Então ele foi para esse tópico e o substituiu pelo gpio 26 por 10kOhm.
Fontes utilizadas- 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/
Importante! Todas as atualizações e notas provisórias a partir das quais os artigos de habr são formados sem problemas podem agora ser vistas no meu laboratório de canais de telegrama66. Assine para não esperar o próximo artigo, mas para saber imediatamente sobre toda a pesquisa :)