Linksys EA9350 V3 (linksys-jamaica)

From postmarketOS
Note This router uses Unmanaged NAND, therefore pmOS can't run on its internal storage.However, it's possible to boot pmOS from a USB flash drive.
Linksys EA9350 V3
Xfce4 running on it with USB GPU
Xfce4 running on it with USB GPU
Manufacturer Linksys
Name EA9350 V3
Codename linksys-jamaica
Released 20XX
Category testing
Original software Linux
Hardware
Chipset Qualcomm IPQ5018
CPU Dual-core Cortex-53
Storage 128MB Raw NAND
Memory 256MB
Architecture ARMv7
Type Router
Features
Flashing
Broken
WiFi
Broken
FDE
Broken
Mainline
Bluetooth
Broken
Internal storage
NFC
Sensors
Magnetometer
Ambient Light
Proximity
Hall Effect
Barometer
Power Sensor
Misc
Built-in DVB
Camera Flash
Keyboard
Touchpad
USB-A
HDMI/DP
Ir TX
Ir RX
Stylus
Memory Card
Haptics
Ethernet
Broken
FOSS bootloader



Maintainer

Users owning this device

Installation

Icon WARNING: DO NOT PLUG multiple USB devices into the router during boot.

Currently, only installing pmOS to a USB drive is supported.

Use pmbootstrap to build your own image, like so:

$ pmbootstrap init
$ pmbootstrap install --sdcard=/dev/sdX # change 'sdX' with the path of your USB drive

After creating your pmOS image, connect to your device via UART.

Next, intercept U-Boot when it's booting. You should get a shell.

Note U-Boot will run commands that are saved in the bootcmd environment variable. By default bootcmd contains commands to load the stock os.

Run these commands to modify the default boot behavior for making pmOS automatically boot when the device is powered on and a pmOS USB stick is plugged in:

IPQ5018# setenv bootstockos "${bootcmd}"
IPQ5018# setenv bootcmd "usb start;fatload usb 0 ${loadaddr} boot-image.itb;bootm ${loadaddr};run bootstockos"
IPQ5018# saveenv

Run the following commands to reboot after you have modified the default boot behavior:

IPQ5018# reset

You can still boot into the stock firmware by unplugging the pmOS USB stick even after you have modified the default boot behavior or you can manually boot pmOS if you don't want to modify the default boot behavior.

Run these commands to manually boot pmOS:

IPQ5018# usb start
IPQ5018# fatload usb 0 ${loadaddr}
IPQ5018# bootm ${loadaddr}

UART

You can find a UART header on the front of the PCB.

UART pin location on motherboard

Colour Pin
Purple Rx
Yellow Tx
Black GND

USB

Functional.

USB Power

GPIO pin 17 needs to be active low in order to turn USB power on. The kernel will not set the GPIO pin to active low when it boots, so there is a initramfs hook for setting that up every time pmOS boots.

How to manually turn off USB power:

# "base" (465) + 17 = 482
echo 1 >  /sys/class/gpio/gpio482/value

How to manually turn on USB power:

# "base" (465) + 17 = 482
echo 1 >  /sys/class/gpio/gpio482/value

Ethernet

It seems like it needs certain userland components to work due to the downsteam kernel. Currently, none of the required components are present in pmOS.

WiFi

It seems like it needs certain userland components or a backported ath12 patch to work due to the downsteam kernel. Components are not available in pmOS.

Mainline

Icon TODO: WiP

WiP Mainline


Currently, U-boot reserves 8MB of RAM for loading the kernel. It doesn't have a dedicated space for initrd, which means pmOS has to squeeze the initrd and kernel into that 8 MB space. If the kernel+initrd is bigger then 8MB, it can corrupt the initrd due to a lack of memory(It seems the kernel can still boot into initrd even if a small portion of initrd is corrupted). The mainline kernel can't run on this device due to the fact that the kernel itself is about 6-8MB in size.