Introduction
Mini USB Portable 3G/4G WiFi Hotspot IEEE 802.11b/g/n 150Mbps Wireless Router - search on ebayThis hardware seems to be exactly the same like (firmware is different ):
- HAME A5 Mini
- HAME A15
Below you will find the way how to bring new working u-boot and openwrt firmware at once.
Basic device parameters:
- SoC RT5350
- MIPS CPU
- Clock 360 MHz
- 4 MByte Flash (GD25Q32)
- 16 MByte RAM (EM639165TS-6G)
- USB Host 2.0
- 10/100 Ethernet switch
- 802.11n interface
- I2C
- Uart
- Reset button
- 2 LEDs
- Micro usb as power source
GPIO description:
- GPIO0 - Reset Button
- GPIO1 - I2C_SD
- GPIO2 - I2C_SCLK
- GPIO7 - USB Power
- GPIO12 - USB Root Hub Power
- GPIO13 - Unknown, but seems to be used in bootloader
- GPIO17 - Red Power LED
- GPIO20 - Blue System LED
Bootloader
Default u-boot bootloader is broken - ethernet is not fully initialized, and it seems that it is protected against starting other firmware than oryginal one.
Do not try to upgrade this bootloader from bootloader menu - you will brick your device !
To load openwrt firmware new bootloader is needed - I am using - uboot128.img taken from JiapengLi
Openwrt firmware
Do not try to upgrade this bootloader from bootloader menu - you will brick your device !
To load openwrt firmware new bootloader is needed - I am using - uboot128.img taken from JiapengLi
Openwrt firmware
Default firmware cannot accept openwrt images so at the beggining (after u-boot upgrade) we will load minimal openwrt firmware firmware.img .
Upgrade procedure
Verification
Check twice if it is router we are talking about:
- Take a look on photos of PCB
- Check MDT structure by call "cat /proc/mtd", has to be like below:
cat /proc/mtd
dev: size erasesize name
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00117a6d 00010000 "Kernel"
mtd5: 00298593 00010000 "RootFS"
mtd6: 003b0000 00010000 "Kernel_RootFS"
mtd0: 00400000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
Think twice :)
First step
- Reset router to default settings
- Connect to router via telnet and login with default user name (admin) and password (admin)
- Now you can upgrade router via FTP or USB
Upgrade via FTP
- Release memory by commands:
killall udhcpd
killall dnsmasq
killall nvram_daemon
rmmod ehci_hcd
rmmod ohci_hcd
ifconfig ra0 down
rmmod rt2860v2_ap
- probably you will be disconnected after last command, so login via telnet again.
- Verify free memory by calling free, check if you have more than 3500 free memory
# free total used free shared buffers Mem: 12884 9180 3704 0 532 Swap: 0 0 0Total: 12884 9180 3704
- Resize TMP, and start proftp server
mount -o remount,size=4M tmpfs /tmp
proftpd.sh server 192.168.100.1 192.168.100.1 21 10
proftpd
- Connect to router via ftp and copy uboot128.img and firmware.img to /tmp directory on router
- ! Upgrade uboot - be careful, do not reset router during and after this operation !
mtd_write write /tmp/uboot128.img Bootloader
- You should see on console
#Unlocking Bootloader ...
#Writing from /tmp/uboot128.img to Bootloader ... [w]
- ! Upgrade firmware - do not reset router during this operation!
mtd_write write /tmp/firmware.img Kernel_RootFS
- You should see on console
#Unlocking Kernel_RootFS ...
#Writing from /tmp/firmware.img to Kernel_RootFS ... [w]
- Reboot router :), enjoy new u-boot with working ethernet and openwrt firmware. Now you can use standard openwrt upgrade procedure.
reboot
- Router will set IP address to 192.168.100.1 , you can login via telnet
Upgrade via USB
killall dnsmasq
killall nvram_daemon
rmmod ehci_hcd
rmmod ohci_hcd
ifconfig ra0 down
rmmod rt2860v2_ap
proftpd.sh server 192.168.100.1 192.168.100.1 21 10
proftpd
#Writing from /tmp/uboot128.img to Bootloader ... [w]
#Writing from /tmp/firmware.img to Kernel_RootFS ... [w]
- Prepare usb stick, format it with fat filesystem, and copy uboot128.img and firmware.img
- Conect usb stick to router and mount it by:
mount /dev/sda1 /mnt
- Wait a few seconds and verify if you see files
ls /mnt
- You should see content, do not go further if you do not see files !
uboot128.img firmware.img
- ! Upgrade uboot - be careful, do not reset router during and after this operation !
mtd_write write /mnt/uboot128.img Bootloader
- You should see on console
#Unlocking Bootloader ...
#Writing from /mnt/uboot128.img to Bootloader ... [w]
- ! Upgrade firmware - do not reset router during this operation!
mtd_write write /mnt/firmware.img Kernel_RootFS
- You should see on console
#Unlocking Kernel_RootFS ...
#Writing from /mnt/firmware.img to Kernel_RootFS ... [w]
- Reboot router :), enjoy new u-boot with working ethernet and openwrt firmware. Now you can use standard openwrt upgrade procedure.
reboot
- Router will set IP address to 192.168.100.1 , you can login via telnet
Connect UART
In order to have access to bootloader (u-boot) menu and functions we have to connect serial port to the router board. Pads are quite large so soldering is relatively easy.#Writing from /mnt/uboot128.img to Bootloader ... [w]
#Writing from /mnt/firmware.img to Kernel_RootFS ... [w]
Serial port parameters:
- Speed: 57600
- Data Bits: 8
- Parity: None
- Stop Bits: 1
Solder three thin wires to the router GND, TX, RX and connect:
- Router GND to adapter GND,
- Router RX via 470 ohm resistor to adapter TX,
- Router TX to adapter RX.
Router pads description |
- Connect USB adapter to PC
- Start terminal and connect to port with proper parameters (putty http://www.putty.org/ or TeraTerm Pro http://www.ayera.com/teraterm/ )
- Power on router - you shoud see bootloader logs
USB to TTL UART converters
My recomendation is to use:
- CP2102
- FT232
- CH340
CP2102 based adapter |
Program SPI flash
You need to connect thin wires to MISO, MOSI, CLK, CS, VCC and GND. I recomend to desolder VCC pin and lift it little bit, you will solder it again after programming. Disconnecting VCC prevent and distrubances from SoC or other components.
SPI flash pinout |
Wires connected to SPI flash, lifted VCC pin at the right corner soldered after programming. |
I have used simple programmer made of
- atmega32 + serduino ported to atmega32 ( http://flashrom.org/Serprog/Arduino_flasher )
- Flashroom PC software http://flashrom.org/Flashrom compiled with MinGW
But you can use any SPI programmer which supports GigaDevice GD25Q32 or flash you currently have.
Upgrade RAM
You can upgrade RAM by desoldering SDRAM chip and soldering chip with 32 MB. It is required to have 4M x 16bit x 4 (otherwise you would need to recompile bootloader) taken from old laptop memory PC133 SO-DIMM. It can be by example:- Winbond W9825G6JH-6
- Samsung K4S561632C-TC
- Samsung K4S561632E
- Micron mT48LC16m16A2
- EtronTech EM63A165
- ESMT M12L2561616A
- EPHY_LED3_N
- EPHY_LDE2_N
- 0,0: 2 MB/8 MB (default)
- 0,1: 8 MB/16 MB
- 1,0: 16 MB/32 MB, 32 MB*2
- 1,1: 32 MB
|
Links
https://openwrt.org/http://wiki.openwrt.org/toh/unbranded/a5-v11
https://github.com/sternlabs/RT5350F-cheap-router
http://www.digitalinferno.com/wiki/Wiki.jsp?page=Mini3G4GUSBRouterOpenWrtExternalUSB
http://lnxpps.de/openwrt/hame-mpra5/
https://github.com/Squonk42/OpenWrt-RT5350
https://github.com/JiapengLi/OpenWrt-RT5350
http://eko.one.pl/?p=openwrt-gpio2
Photos
PCB top side |
PCB bottom side |
Opened case |
How to open case |
Router case |
Desoldered CPU, vias visible, from anton.rad |