Linksys WRT1900ACS/WRT1900ACS V2 (linksys-shelby)

== Contributors ==
* exkc
== Users owning this device ==
==Default Boot Behavior==
The device 's stock uboot is like any other u-boot,it will run commands that are saved in the bootcmd environment variable. However unlike other u-boot, the bootcmd is always setted to ether run nandboot (Run the command that in nandboot environment variable) or run altnandboot (Run the command that in altnandboot environment variable) depend on whoever it booting off the primary firmware (Slot A in android term) or the alternate firmware (Slot B in android term) .
==Installation==
===Installing pmOS to your disk===
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.
===Booting===
Due to the boot behavior mention above , pmOS wouldnt boot automatically when it got powered on.Therefore we need manually boot pmos from uboot shell or make it automatically boot from external drive by modify either nandboot environment variable or altnandboot environment variable.
====Modify environment variable====
In this section, we will modifying the default environment variable for making pmOS automatically boot when the device is powered on and a pmOS drive is plugged in.
After you has those command at below,run those command to reboot 
# reset
=====altnandboot=====
In this section, we will modifying the altnandboot environment variable for making pmOS automatically boot when the device is powered on and a pmOS drive is plugged in.
======USB Stick======
Run these commands to modify the default altnandboot environment variable for making pmOS automatically boot when the device is powered on and a pmOS USB stick is plugged in:
# setenv altnandboot_stock ${altnandboot}
# setenv altnandboot "usb start;ext2load usb 0 ${kernel_addr_r} uImage;ext2load usb 0 ${ramdisk_addr_r} uInitrd;bootm ${kernel_addr_r} ${ramdisk_addr_r};run altnandboot_stock"
# saveenv
======SATA Drive======
Run these commands to modify the default altnandboot environment variable for making pmOS automatically boot when the device is powered on and a pmOS SATA Drive is plugged in:
# setenv altnandboot_stock ${altnandboot}
# setenv altnandboot "scsi init;ext2load scsi 0 ${kernel_addr_r} uImage;ext2load scsi 0 ${ramdisk_addr_r} uInitrd;bootm ${kernel_addr_r} ${ramdisk_addr_r};run altnandboot_stock"
# saveenv
=====nandboot=====
In this section, we will modifying the nandboot environment variable for making pmOS automatically boot when the device is powered on and a pmOS drive is plugged in.
======USB Stick======
Run these commands to modify the default altnandboot environment variable for making pmOS automatically boot when the device is powered on and a pmOS USB stick is plugged in:
# setenv nandboot_stock ${altnandboot}
# setenv nandboot "usb start;ext2load usb 0 ${kernel_addr_r} uImage;ext2load usb 0 ${ramdisk_addr_r} uInitrd;bootm ${kernel_addr_r} ${ramdisk_addr_r};run nandboot_stock"
# saveenv
======SATA Drive======
Run these commands to modify the default altnandboot environment variable for making pmOS automatically boot when the device is powered on and a pmOS SATA Drive is plugged in:
# setenv nandboot_stock ${altnandboot}
# setenv nandboot "scsi init;ext2load scsi 0 ${kernel_addr_r} uImage;ext2load scsi 0 ${ramdisk_addr_r} uInitrd;bootm ${kernel_addr_r} ${ramdisk_addr_r};run nandboot_stock"
# saveenv
====Manually boot pmos====
In this section, we will manually boot pmos
======USB Stick======
Run these commands to manually boot pmOS from usb stick:
# usb start
# ext2load usb 0 ${kernel_addr_r} uImage
# ext2load usb 0 ${ramdisk_addr_r} uInitrd
# bootm ${kernel_addr_r} ${ramdisk_addr_r}
======SATA Drive======
Run these commands to manually boot pmOS from sata drive:
# scsi init
# ext2load scsi 0 ${kernel_addr_r} uImage
# ext2load scsi 0 ${ramdisk_addr_r} uInitrd
# bootm ${kernel_addr_r} ${ramdisk_addr_r}
==Wifi==
Out of tree kernel module is required for it to work and that module is not packaged under pmos.
==Ethernet/Switch==
Work
those ethernet port that is connected into the switch showed up in ip a just like a normal ethernet device.
==Esata/Usb combo port==
===Esata===
Work 
(Tested with sata multiplier , sata ssd)
===Usb===
Work
==Usb 3 Port==
Work
== See also ==
* WRT1900ACS on openwrt
* Info about the default boot behaviour
* Info about the wifi driver