MiFi installed wrong firmware, eth ports seem dead

Hi I am trying to revive my MiFi. I last looked at it over a year ago and can’t remember what I did but I think I tried to install an OpenWRT upgrade which included a firmware image.

But I can’t get anything in/out of LAN or WAN ports. I have tried different cables, and different host ethernet ports (Linux on one desktop PC, Windows 10 on a laptoip). I’ve followed the instructions about setting host IP to 192.168.1.2 etc. Trying the Windows troubleshooter in desperation tells me it thinks there is no ethernet cable connected but as mentioned I’ve tried 2 cables, both of which work without problems in other situations.

I originally bought the MiFi second hand and it wouldn’t boot or do anything, which is why I immediately flashed the firmware (a long time ago as I say so can’t remember exactly how).

Could it just be that the LAN/WAN ports are physically dead? Any way to test?

I have a USB UART device (I am not very experienced with it). If I connect it to the pins on the MiFi I can get into the uboot console by following the hold reset button, wait for 6 flashes etc procedure. I can send commands and read output from uboot.

Everything in uboot indicates that the installed firmware is AR150

The boot messages, filenames etc all indicate that I have installed AR150 firmware. Could this be why the LAN/WAN ports don’t work? Could it mean that the uboot server is on a different address ie not 192.168.1.1?

Without ethernet access I can’t use TFTP to flash firmware. Is there a way without TFTP?

The current state is:

  • It turns on and goes through what seems like a normal boot process with flashing LEDs etc
  • With USB/UART I can access the uboot console with picocom in Linux. Everything looks ok (I think) except talking about AR150 instead of MiFi
  • I can type commands to uboot and it seems to respond as I expect
  • If I try to use TFTP to transfer a binary to flash, it hangs for a while then tells me it cant find the host (EDIT: error message is ## Error: ping failed, host 192.168.1.2 is not alive!)
  • I can’t ping the router from the host
  • According to the flashing lights on the front it seems I can (my original typo said “can’t”) put it into uboot HTTP mode, but I can’t access 192.168.1.1 in any browsers/OS I’ve tried

Any ideas? This seems to be a nice device I hate having it sat unused in a cupboard. Being able to get into uboot makes me think it’s not dead… unless the LAN/WAN ports are physically broken.

EDIT: I thought I’d found a way to transfer the file over serial/UART using kermit… but it depends on telling uboot to wait with the loadb command. But it seems the uboot I have on the mifi doesn’t include that command.

What is the exact error message you get?
Make sure that there is f.e. no firewall intercepting the TFTP server process if you run Windows.

Thanks for replying.

This is the full terminal output (on Linux/picocom trying to initiate TFTP transfer with run lf):

uboot> run lf
## Error: MDIO_BUSY!
## Error: MDIO_BUSY!
## Error: MDIO_BUSY!
## Error: MDIO_BUSY!
## Error: MDIO_BUSY!
## Error: unknown eth speed!
Ethernet mode (duplex/speed): 1/10 Mbps
Using eth0 device

## Error: ping failed, host 192.168.1.2 is not alive!

Linux (and Windows when I tried it) always tells me that the ethernet cable is unplugged, at all times whether it’s plugged in to WAN or LAN on the router.

Here is some other uboot output in case it’s useful (it’s a lot, hope that’s ok). I get a lot of Error: MDIO BUSY during communication but it seems unrelated, maybe due to imperfect connection config with picocom? Anyway I’ve omitted long repeats of it

Uboot boot process:

*********************************************
*        U-Boot 1.1.4  (Jul  9 2015)        *
*********************************************

AP121 (AR9331) U-Boot for GL-AR150

DRAM:   64 MB DDR2 16-bit
FLASH:  Winbond W25Q128 (16 MB)
CLOCKS: 400/400/200/33 MHz (CPU/RAM/AHB/SPI)

** Warning: bad env CRC, using default,
   use 'saveenv' to save it in FLASH

LED on during eth initialization...

## Error: MDIO_BUSY! 
ag7240_mii_setup: MDC check failed
## Error: MDIO_BUSY!
   *** ***           *   ****    *   *****  ***   
  *  *  *            *    *  *  **   *     *   *  
 *      *            **   *  *   *   *     *   *  
 *      *    *****  * *   ***    *   ****  *   *  
 *  *** *           * *   * *    *       * *   *  
 *   *  *           ****  *  *   *       * *   *  
  *  *  *   *       *  *  *  *   *   *   * *   *  
   **  ******      **  ***** ** ***   ***   ***   
Hit any key to stop autobooting:  0 

Device calibrated. Booting ...
Booting image at: 0x9F050000

   Image name:   MIPS OpenWrt Linux-3.18.23
   Created:      2015-12-30  10:01:18 UTC
   Image type:   MIPS Linux Kernel Image (lzma compressed)
   Data size:    1198200 Bytes = 1.1 MB
   Load address: 0x80060000
   Entry point:  0x80060000

Uncompressing kernel image... ## Error: LZMA error num: 1

## Error: failed to execute 'bootcmd'!
HTTP server is starting for firmware update...

## Error: MDIO_BUSY!
## Error: unknown eth speed!
Ethernet mode (duplex/speed): 1/10 Mbps
HTTP server is starting at IP: 192.168.1.1
HTTP server is ready!


Output from printenv in uboot:

bootargs=console=ttyATH0,115200 board=domino root=31:03 rootfstype=squashfs,jffs2 noinitrd mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1280k(kernel),14656k(rootfs),64k(nvram),64k(art)ro,15936k@0x50000(firmware)
bootcmd=bootm 0x9f050000
bootdelay=1
baudrate=115200
ipaddr=192.168.1.1
serverip=192.168.1.2
bootfile="firmware.bin" 
loadaddr=0x80800000
ncport=6666
uboot_addr=0x9F000000
uboot_name=uboot_for_gl-ar150.bin
uboot_size=0x40000
lu=if ping $serverip; then tftp $loadaddr $uboot_name && if itest.l $filesize == $uboot_size; then erase $uboot_addr +$filesize && cp.b $loadaddr $uboot_addr $filesize && echo OK!; else echo ERROR! Wrong file size!; fi; else ERROR! Server not reachable!; fi
firmware_addr=0x9F050000
firmware_name=openwrt-gl-ar150.bin
lf=if ping $serverip; then tftp $loadaddr $firmware_name && erase $firmware_addr +$filesize && cp.b $loadaddr $firmware_addr $filesize && echo OK!; else ERROR! Server not reachable!; fi
lc=tftp 0x81000000 config.bin &&cp.b 0x9fff1000 0x80060000 0xf000 && cp.b 0x81000000 0x80060002 0x06 &&erase 0x9fff0000 +0x10000 && cp.b 0x81000000 0x9fff0000 $filesize && cp.b 0x80060000 0x9fff1000 0xf000
stdin=serial
stdout=serial
stderr=serial
ethact=eth0

Environment size: 1203/32764 bytes

I am not an uboot specialist but can you try to set the eth speed of your PC (where you run the TFTP server) to 10 mbps only? I would guess that auto-negotiation does not work.

Thanks for the idea. I tried it and tried the tftp update again but the output was almost the same — only difference was the Ethernet mode (duplex/speed): 1/10 Mbps line was missing this time… maybe that line (before I’d changed the speed) was the result of negotiating the speed? I’m guessing, out of my depth with networking stuff.

any chance you can get hold of a usb to ethernet cable?

I have something that physically fits but don’t think it’s compatible (it’s USB to RS485, used to communicate with a solar controller). I’m sure I could buy a USB to ethernet, want to make sure I’ve exhausted all other options before spending any money. Times are tough enough that I’d probably feel obliged to buy from Aliexpress too so would be a multi-week wait. I’ll do it if I have to.

I’m interested in what you’re thinking anyway?

I know this might be a stupid question but you set a static IP of 192.168.1.2 on your PC while trying Uboot right? Because there will be no DHCP.

Yep I mentioned in the OP that I’m doing this (I understand there’s lots of info so easy to have missed it). Thanks for checking anyway.

Showing AR150 is fine because it is the same chipset.

The log indicate that uboot still works. But if Ethernet ports does not work then there is no way to flash firmware.

The only thing that you can try is to use another computer/cable until the Ethernet works. At lest your computer should see cable plugged.

Thanks for confirming about the AR-150, and that ethernet ports are the only way to update this router. I was hoping that uboot would allow serial transfer but I think I’ve learned that there are different versions and uboot on this router doesn’t allow it.

I’m unconvinced that another computer will fix this as I’ve tried various combinations of OS, cable and physical computers and none of them have seen anything from the ethernet ports. So I can only imagine that there’s a hardware fault with the ports and that sadly for me this is a write-off.

Thanks to everyone for trying to help.

2 Likes