ipq806x: add Support for ASRock G10 master
authorChristian Lamparter <chunkeey@gmail.com>
Fri, 11 Oct 2019 22:49:15 +0000 (00:49 +0200)
committerChristian Lamparter <chunkeey@gmail.com>
Sat, 19 Oct 2019 16:50:49 +0000 (18:50 +0200)
commitee10cb1aa50765978552ab57e6bebd6cbe2a01a8
tree0aa8212f4c055c16323a0cbffc1f1c6d10646c2f
parent2b9bdc8da9a0befe22cae6d798e6779edac4ec25
ipq806x: add Support for ASRock G10

The ASRock G10 is a 2.4/5 GHz band 11ac "Gaming" router,
based on Qualcomm IPQ8064.

Specifications:

SoC: Qualcomm IPQ8064
CPU: Dual-Core A15 @ (384 - 1,400 MHz, 2C2T)
DRAM: 512 MiB (~467 MiB available)
NAND: 128 MB (Micron MT29F1G08ABBEAH4)
WLAN0: 4T4R 5 GHz Wlan (QCA9980)
WLAN1: 4T4R 2.4 GHz Wlan (QCA9980)
ETH:    5x 10/100/1000 Mbps Ethernet (QCA8337)
INPUT:  Reset Button, WPS 2.4G and WPS 5G Button
LEDS:   1 mulicolor status LED
USB:    2x USB 3.0 Type-A
POWER:  12VDC/3A AC Adapter + dedicated Power Switch
UART:   Setting is 115200-8-N-1. 1x4 .1" unpopulated header
on the PCB (J6 - very tiny silkscreen next to TX).
        Pinout: 1. 3v3 (Square - best skipped!), 2. RX, 3. GND, 4. TX

WARNING: The serial port needs a TTL/RS-232 3.3v level converter!
 (Depending on the serial adapter RX and TX might need to
  be swappped).

Note about the IR-Remote:
There's a 8-Bit MCU (SONIX SN8F25E21SG) which is controlling the
IR-Remote and is fed by the IR-Photodiode. The SoC can talk to
the device via I²C. The vendor's GPL archive comes with the source
of the inteface driver for this as a (character driver), the main
control software is however a blob.

Installation Instructions:
This requires a TFTP-Server and disassembly of the G10 Router and
some soldering to gain access to the serial/UART which is needed
for booting and flashing (as well as debricking or reverting back
to stock).

 0. Power off the router and disconnect it.
 1. Open up the case
    Remove the phillips screws hidden behind each of the two
    rubber feet on the bottom of the device. They located on
    the opposite site of the hardware-info sticker on the bottom.

    Next, remove the HDMI-Dongle and remove the third and last
    phillips screw inside the HDMI-Dongle compartment.

    Then use a slim, preferably dull kitchen knife to pry apart the
    two plastic clips at the top (Tip: You can see these clips from
    inside the HDMI-Dongle compartment. The big LED lightpipe on
    the top makes for an excellent entry point, be careful though to
    not stab through though, since the the PCB with the LEDs is directly
    beneath.

    Once they are loose you can apply your "force" and pry open up the
    remaining clips. ASRock did a reasonably job with the sturdy
    plastic clips and thick receptacle.

 2. Solder/Connect the UART
    Common USB<->UART converter just need RX,GND and TX.
    See Warning above. Don't connect a straight RS232 or 5V one!
    This can kill your SoC and/or the power-rail of the board.

 3. Connect G10 via Ethernet-cable to your network and prepare your PC
    Download the initramfs image and rename it to g10.bin
    Setup a TFTP-Server on your PC (listening on 192.168.1.2) and
    place the g10.bin into the TFTP root directory.

 4. Start the G10 by toggling the power button and enter UBoot Prompt

    Watch the bootlog and hit a key once it says "Hit any key to stop autoboot:"

 5. Prepare UBoot environment for OpenWrt image

    Enter the following into the (IPQ)# shell

    # setenv mtdids nand0=nand0
    # setenv mtdparts mtdparts=nand0:48m@0x1340000(ubi)
    # setenv bootargs console=ttyMSM0,115200n8
    # setenv loadkernel 'ubi read 44000000 kernel && bootm'
    # setenv bootmain 'ubi part ubi && run loadkernel'
    # setenv bootwrt 'run bootmain || dhcp'
    # setenv bootcmd 'run bootwrt'
    # saveenv

    The 'saveenv' will commit the changes to be permanent.
    But unfortunately, this is incompatible with the stock firmware.

    If there's a need to revert back to the stock firmware,
    these changes will make them work again:

    # setenv bootargs console=ttyHSL1,115200n8
    # setenv bootcmd bootipq
    # saveenv

 6. Boot the temporary ramdisk image

    # setenv ipaddr 192.168.1.1
    # setenv serverip 192.168.1.2
    # tftpboot 44000000 g10.bin
    # bootm

 7. Wait for your router's status LED to stop blinking rapidly and
    glow just green.

 8. Connect via your PC to the OpenWrt running in RAM

    The default IPv4-Address of your router will be 192.168.1.1.
    Download the G10's sysupgrade.bin and rename it to
    openwrt-sysupgrade.bin which then you need to copy to your
    router's temporary directory (/tmp)

    # scp openwrt-sysupgrade.bin root@192.168.1.1:/tmp

    use ssh from your PC into your router as root.

    # ssh root@192.168.1.1

    Now is the last time you can make a backup of the original
    "kernel", "ubi_rootfs" and "ubi_rootfs_data" volumes and
    copy them over to your PC.

    to do the final install do:

    # sysupgade -v openwrt-sysupgrade.bin

    - This will will automatically reboot the router -

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
package/firmware/ipq-wifi/Makefile
package/firmware/ipq-wifi/board-asrock_g10.qca9980.bin [new file with mode: 0644]
target/linux/ipq806x/base-files/etc/board.d/02_network
target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ipq806x/base-files/lib/preinit/05_set_iface_mac_ipq806x.sh [new file with mode: 0644]
target/linux/ipq806x/base-files/lib/upgrade/asrock.sh [new file with mode: 0644]
target/linux/ipq806x/base-files/lib/upgrade/platform.sh
target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8064-g10.dts [new file with mode: 0644]
target/linux/ipq806x/image/Makefile
target/linux/ipq806x/patches-4.14/0069-arm-boot-add-dts-files.patch