Linksys EA9350 V3 (linksys-jamaica)
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. |
Xfce4 running on it with USB GPU | |
Manufacturer | Linksys |
---|---|
Name | EA9350 V3 |
Codename | linksys-jamaica |
Released | 20XX |
Category | testing |
Pre-built images | no |
Original software | Linux |
Hardware | |
Chipset | Qualcomm IPQ5018 |
CPU | Dual-core Cortex-53 |
Storage | 256MB Raw NAND |
Memory | 512MB |
Architecture | ARMv7 |
Type | Router |
Flashing |
Broken |
---|---|
WiFi |
Broken |
FDE |
Broken |
Mainline | |
Bluetooth |
Broken |
Internal storage | |
NFC | |
Magnetometer | |
---|---|
Ambient Light | |
Proximity | |
Hall Effect | |
Barometer | |
Power Sensor | |
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
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.
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.
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
TODO: WiP |
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.