How to recover a LinkIt Smart 7688

Just a few notes regarding recovery of the LinkIt Smart 7688 / LinkIt Smart 7688 Duo devices.

Handbook

Update the firmware with a USB drive

Factory reset

Access bootloader and kernel console

The Bootloader console and Linux kernel console are configured to serial port UART2 (P8/UART_TXD2 and P9/UART_RXD2) at a baud rate of 57600. This applies to both LinkIt Smart 7688 and LinkIt Smart 7688 Duo.

You can connect to the system console of LinkIt Smart 7688 and LinkIt Smart 7688 Duo development boards by using a Serial (or UART) to USB converter.

  • Connect the Serial to USB cable to LinkIt Smart 7688’s UART pins:

     Converter's RX to P8.
     Converter's TX to P9.
     GND to GND.
    
  • Connect to the COM port and set baud rate to 57600.

Issues booting with the FTDI connection

Issue: The LinkIt bombs out while booting after printing "procd: - init -" to the bootloader console.

Recover via TFTP

  • You need to wire a Ethernet Port to the LinkIt
  • choose a TFTP-server (e.g. aTFTP)
  • Put an imagefile into /srv/atftp/<IMAGE_NAME> assign a <FIX_IP> to your machine and start the TFTP server systemctl start atftpd. Watch the logs journalctl -n 100 -u atftpd -f
  • connect to the serial and reboot the linkit. The bootloader will lead you to the rest of the procedure:
============================================ 
Ralink UBoot Version: 4.3.0.0
-------------------------------------------- 
ASIC 7628_MP (Port5<->None)
DRAM component: 1024 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 128 MBytes
Flash component: SPI Flash
Date:Sep 10 2015  Time:05:56:31
============================================ 
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768 

 ##### The CPU freq = 580 MHZ #### 
 estimate memory size =128 Mbytes
RESET MT7628 PHY!!!!!!
GPIOMODE --> 50054404

GPIOMODE2 --> 5540551

Please choose the operation: 
   1: Load system code to SDRAM via TFTP. 
   2: Load system code then write to Flash via TFTP. 
   3: Boot system code via Flash (default).
   4: Entr boot command line interface.
   7: Load Boot Loader code then write to Flash via Serial. 
   9: Load Boot Loader code then write to Flash via TFTP. 

You choosed 2

 0 
2: System Load Linux Kernel then write to Flash via TFTP. 
 Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)
 Please Input new ones /or Ctrl-C to discard
	Input device IP (10.10.10.123) ==:192.168.26.2
	Input server IP (10.10.10.3) ==:192.168.26.1
	Input Linux Kernel filename () ==:linkit_duo.img
 netboot_common, argc= 3 

 NetTxPacket = 0x87FB5480 

 KSEG1ADDR(NetTxPacket) = 0xA7FB5480 

 NetLoop,call eth_halt ! 

 NetLoop,call eth_init ! 
Trying Eth0 (10/100-M)

 Waitting for RX_DMA_BUSY status Start... done


 ETH_STATE_ACTIVE!! 
TFTP from server 192.168.26.1; our IP address is 192.168.26.2
Filename 'linkit_duo.img'.
 TIMEOUT_COUNT=10,Load address: 0x80100000
Loading: T T T T T T T T T T 
Retry count exceeded; starting again

ArpTimeoutCheck 
TFTP from server 192.168.26.1; our IP address is 192.168.26.2
Filename 'linkit_duo.img'.

 TIMEOUT_COUNT=10,Load address: 0x80100000
Loading: T T T T Got ARP REPLY, set server/gtwy eth addr (3c:97:0e:0f:ca:fc)
Got it
#################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ########################################
done
Bytes transferred = 4194499 (4000c3 hex)
NetBootFileXferSize= 004000c3
................................................................
................................................................
.
.
Done!

on the atftpd output you would see:

Sep 15 20:59:44 <HOST> atftpd[5874]: socket may listen on any address, including broadcast
Sep 15 20:59:44 <HOST> atftpd[5874]: Serving linkit_duo.img to 192.168.26.2:2860
Sep 15 20:59:44 <HOST> atftpd[5874]: timeout option -> 3
Sep 15 20:59:51 <HOST> atftpd[5874]: Server thread exiting

AVRDUDE Issues

If you compiles the OpenWRT-image for the LinkIt on your own, it might, that you catched a buggy version of AVRDude. I fixed the issue by using an older version. This I did, by manipulating the avrdude-Makefile in the OpenWRT build system. I switched back to version 6.1

openwrt/feeds/packages/utils/avrdude/Makefile:

PKG_VERSION:=6.1
#PKG_HASH:=0f9f731b6394ca7795b88359689a7fa1fba818c6e1d962513eb28da670e0a196
PKG_HASH:=9e98baca8e57cad402aaa1c7b61c8de750ed4f6fed577f7e4935db0430783d3b

1 Like

You can find some hints in the thread Audio Recording mit LinkIt Smart 7688 und I2S-Mikro also.