openwrt/target/linux
Tomasz Maciej Nowak e24635710c ipq40xx: add support for Luma Home WRTQ-329ACN
Luma Home WRTQ-329ACN, also known as Luma WiFi System, is a dual-band
wireless access point.

Specification
SoC: Qualcomm Atheros IPQ4018
RAM: 256 MB DDR3
Flash: 2 MB SPI NOR
       128 MB SPI NAND
WIFI: 2.4 GHz 2T2R integrated
      5 GHz 2T2R integrated
Ethernet: 2x 10/100/1000 Mbps QCA8075
USB: 1x 2.0
Bluetooth: 1x 4.0 CSR8510 A10, connected to USB bus
LEDS: 16x multicolor LEDs ring, controlled by MSP430G2403 MCU
Buttons: 1x GPIO controlled
EEPROM: 16 Kbit, compatible with AT24C16
UART: row of 4 holes marked on PCB as J19, starting count from the side
      of J19 marking on PCB
      1. GND, 2. RX, 3. TX, 4. 3.3V
      baud: 115200, parity: none, flow control: none

The device supports OTA or USB flash drive updates, unfotunately they
are signed. Until the signing key is known, the UART access is mandatory
for installation. The difficult part is disassembling the casing, there
are a lot of latches holding it together.

Teardown
Prepare three thin, but sturdy, prying tools. Place the device with back
of it facing upwards. Start with the wall having a small notch. Insert
first tool, until You'll feel resistance and keep it there. Repeat the
procedure for neighbouring walls. With applying a pressure, one edge of
the back cover should pop up. Now carefully slide one of the tools to
free the rest of the latches.
There's no need to solder pins to the UART holes, You can use hook clips,
but wiring them outside the casing, will ease debuging and recovery if
problems occur.

Installation
1. Prepare TFTP server with OpenWrt initramfs image.
2. Connect to UART port (don't connect the voltage pin).
3. Connect to LAN port.
4. Power on the device, carefully observe the console output and when
   asked quickly enter the failsafe mode.
5. Invoke 'mount_root'.
6. After the overlayfs is mounted run:
     fw_setenv bootdelay 3
   This will allow to access U-Boot shell.
7. Reboot the device and when prompted to stop autoboot, hit any key.
8. Adjust "ipaddr" and "serverip" addresses in U-Boot environment, use
   'setenv' to do that, then run following commands:
     tftpboot 0x84000000 <openwrt_initramfs_image_name>
     bootm 0x84000000
   and wait till OpenWrt boots.
9. In OpenWrt command line run following commands:
     fw_setenv openwrt "setenv mtdids nand1=spi_nand; setenv mtdparts mtdparts=spi_nand:-(ubi); ubi part ubi; ubi read 0x84000000 kernel; bootm 0x84000000"
     fw_setenv bootcmd "run openwrt"
10. Transfer OpenWrt sysupgrade image to /tmp directory and flash it
    with:
     ubirmvol /dev/ubi0 -N ubi_rootfs
     sysupgrade -v -n /tmp/<openwrt_sysupgrade_image_name>
11. After flashing, the access point will reboot to OpenWrt, then it's
    ready for configuration.

Reverting to OEM firmware
1. Execute installation guide steps: 1, 2, 3, 7, 8.
2. In OpenWrt command line run following commands:
     ubirmvol /dev/ubi0 -N rootfs_data
     ubirmvol /dev/ubi0 -N rootfs
     ubirmvol /dev/ubi0 -N kernel
     ubirename /dev/ubi0 kernel1 kernel ubi_rootfs1 ubi_rootfs
     ubimkvol /dev/ubi0 -S 34 -N kernel1
     ubimkvol /dev/ubi0 -S 320 -N ubi_rootfs1
     ubimkvol /dev/ubi0 -S 264 -N rootfs_data
     fw_setenv bootcmd bootipq
3. Reboot.

Known issues
The LEDs ring doesn't have any dedicated driver or application to control
it, the only available option atm is to manipulate it with 'i2cset'
command. The default action after applying power to device is spinning
blue light. This light will stay active at all time. To disable it
install 'i2c-tools' with opkg and run:
 i2cset -y 2 0x48 3 1 0 0 i
The light will stay off until next cold boot.

Additional information
After completing 5. step from installation guide, one can disable asking
for root password on OEM firmware by running:
 sed -e 's/root/root::/' -i /etc/passwd
This is useful for investigating the OEM firmware. One can look
at the communication between the stock firmware and the vendor's
cloud servers or as a way of making a backup of both flash chips.
The root password seems to be constant across all sold devices.
This is output of 'led_ctl' from OEM firmware to illustrate
possibilities of LEDs ring:

Usage: led_ctl [status | upgrade | force_upgrade | version]
       led_ctl solid    COLOR <brightness>
       led_ctl single   COLOR INDEX <brightness 0 - 15>
       led_ctl spinning COLOR <period 1 - 16 (lower = faster)>
       led_ctl fill     COLOR <period 1 - 16 (lower = faster)>
                                             ( default is 5 )
       led_ctl flashing COLOR <on dur 1 - 128>  <off dur 1 - 128>
                              (default is  34)  ( default is 34 )
       led_ctl pulsing  COLOR
COLOR: red, green, blue, yellow, purple, cyan, white

Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl>
[squash "ipq-wifi: add BDFs for Luma Home WRTQ-329ACN" into commit,
changed ubi volumes for easier integration, slightly reworded
commit message, changed ubi volume layout to use standard names all
around]
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
2020-09-25 19:30:19 +02:00
..
apm821xx treewide: remove empty default cases 2020-09-17 12:46:19 +02:00
arc770 arc770: drop support for kernel 4.14 2020-09-02 16:29:22 +02:00
archs38 treewide: use wpad-basic-wolfssl as default 2020-08-20 14:19:39 +02:00
armvirt kernel: set WATCHDOG_CORE dependency in kmod-hwmon-sch5627 2020-08-24 14:09:11 +02:00
at91 at91: explicitly set CONFIG_USB_SUPPORT for sam9x subtarget 2020-08-27 16:36:18 +02:00
ath25 ath25: fix preinit Ethernet port configuration 2020-09-10 18:52:15 +02:00
ath79 target: update SPDX license names 2020-09-22 20:58:26 +02:00
bcm27xx kernel: bump 5.4 to 5.4.67 2020-09-24 18:53:23 +02:00
bcm47xx kernel: bump 5.4 to 5.4.64 2020-09-12 01:28:50 +02:00
bcm53xx treewide: use wpad-basic-wolfssl as default 2020-08-20 14:19:39 +02:00
bcm63xx kernel: bump 5.4 to 5.4.67 2020-09-24 18:53:23 +02:00
gemini gemini: Add swap partition to DNS-313 2020-07-31 18:34:40 +02:00
generic kernel: bump 5.4 to 5.4.67 2020-09-24 18:53:23 +02:00
imx6 kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-06 12:37:04 +02:00
ipq40xx ipq40xx: add support for Luma Home WRTQ-329ACN 2020-09-25 19:30:19 +02:00
ipq806x ipq806x: fix support of Edgecore ECW5410 support 2020-09-19 13:32:11 +02:00
ipq807x kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-06 12:37:04 +02:00
kirkwood target: update SPDX license names 2020-09-22 20:58:26 +02:00
lantiq kernel: bump 5.4 to 5.4.67 2020-09-24 18:53:23 +02:00
layerscape kernel: bump 5.4 to 5.4.67 2020-09-24 18:53:23 +02:00
malta kernel: set WATCHDOG_CORE dependency in kmod-hwmon-sch5627 2020-08-24 14:09:11 +02:00
mediatek kernel: bump 5.4 to 5.4.67 2020-09-24 18:53:23 +02:00
mpc85xx target: update SPDX license names 2020-09-22 20:58:26 +02:00
mvebu target: update SPDX license names 2020-09-22 20:58:26 +02:00
mxs treewide: make dependency on kmod-usb-net selective 2020-08-10 12:54:30 +02:00
octeon octeon: add support for Itus Shield Router 2020-08-16 02:15:06 +02:00
octeontx kernel: bump 5.4 to 5.4.60 2020-08-24 17:33:58 +02:00
omap treewide: use wpad-basic-wolfssl as default 2020-08-20 14:19:39 +02:00
oxnas target: update SPDX license names 2020-09-22 20:58:26 +02:00
pistachio pistachio: drop support for kernel 4.14 2020-09-02 16:29:22 +02:00
ramips ramips: add support for Linksys EA7300 v2 2020-09-23 12:17:32 +02:00
rockchip kernel: bump 5.4 to 5.4.58 2020-08-18 18:14:54 +02:00
rtl838x target: update SPDX license names 2020-09-22 20:58:26 +02:00
sunxi treewide: use wpad-basic-wolfssl as default 2020-08-20 14:19:39 +02:00
tegra treewide: use wpad-basic-wolfssl as default 2020-08-20 14:19:39 +02:00
uml uml: update to linux 5.4 2020-08-22 07:02:01 +02:00
x86 kernel: bump 5.4 to 5.4.63 2020-09-06 19:55:19 +02:00
zynq kernel: unify CONFIG_GPIO_SYSFS in kernel configs 2020-08-06 12:37:04 +02:00
Makefile build: add 'make kernel_xconfig' command 2020-07-08 16:07:05 +02:00