Difference between revisions of "Flameman/routerstation-pro"

From eLinux.org
Jump to: navigation, search
(mini pci)
(main)
(Tag: Replaced)
 
Line 3: Line 3:
  
 
this page is under development ...
 
this page is under development ...
 
= main =
 
 
The RouterStation Pro is an Atheros AR7161 MIPS.v2-based board. Geared towards networking applications, it has all of the usual features as well as three type IIIA mini-PCI slots and an on-board 3-port 10/100/1000 Ethernet switch, in addition to the 10/100/1000 Ethernet WAN port which supports Power-over-Ethernet.
 
 
<pre>
 
Hardware
 
Info
 
Architecture: MIPS.v2, BigEndian
 
Vendor: Atheros
 
Bootloader: RedBoot
 
System-On-Chip: Atheros MIPS 24K
 
CPU Speed: 680 Mhz
 
Flash-Chip:
 
Flash size: 16 MiB
 
RAM: 64 MiB DDR
 
Wireless: 3x 32-bit Mini-PCI slots (None included)
 
Switch: Ethernet Phy switch, ADMTEK "Infineon" ADM6996FC
 
Ethernet ports: 3x 10/100 BASE-TX (Cat. 5, RJ-45) Ethernet Interface with PoE on WAN
 
USB: Yes v2.0
 
Serial: Yes
 
JTAG: Yes
 
</pre>
 
 
 
== Boot Process ==
 
 
The RouterStation uses RedBoot as its boot loader. In the default configuration (shipping as of December 2008), a basic Linux kernel and BusyBox userspace is loaded from flash. The RedBoot boot sequence can be interrupted and a kernel loaded via TFTP instead.
 
 
RedBoot uses the WAN port for its network interface.
 
 
Once the system is booted, login with username/password ubnt to access the shell.
 
 
=== memory layout ===
 
 
<pre>
 
Board: Ubiquiti RouterStation PRO
 
Arch: ar7100pro
 
  RAM: 0x80000000-0x88000000, [0x8003bf00-0x87fe1000] available
 
Flash: 0xbf000000-0xc0000000, in 256 blocks of 0x00010000 bytes each
 
</pre>
 
 
 
=== redboot ===
 
 
[[flameman/redboot]]
 
 
do not use this
 
<pre>
 
load -r -b 0x80040000 -h 192.168.1.14 gentoo-ubiquiti
 
</pre>
 
 
put a kernel.elf in the /tftpboot folder and just type
 
 
load kernel.elf
 
 
 
 
=== Just a quick note ===
 
 
more to myself than anyone else, but I wasn't able to easily find this information online, trolling through the OpenWRT and Ubiquiti forums.
 
 
I wanted to try booting different kernels on the device before committing to flashing, so that all I had to do was reboot the board and everything would come back up as normal. It seems obvious that this should be possible, and with a bit of digging around in RedBoot docs, trial and error, and a few lucky guesses I was able to figure out the incantation to make RedBoot load an uncompressed linux kernel (ELF) and boot it:
 
 
<pre>
 
load -m tftp -h 192.168.1.1 openwrt-ar71xx-generic-vmlinux.elf
 
exec -c "board=UBNT-RSPRO panic=1"
 
</pre>
 
 
Note that this does not change the root filesystem, so if your modules aren't compatible, this won't work, but I suspect if you use an embedded initrd you can run the system entirely out of RAM without touching flash.
 
 
 
 
 
 
 
==== kernel ====
 
 
expected lzma compressed kernel ( -d means decompress )
 
 
<pre>
 
RedBoot> cache off
 
RedBoot> fis load -d -e kernel
 
RedBoot> go
 
</pre>
 
 
i am integrating 2.6.32.27 to mips-v2 ar71xx, a lot of patches to be committed
 
 
 
 
== networks idea ==
 
 
Routerstatio Pro physical networks go this way
 
 
<pre>
 
    +-----------+      +-----------+
 
    |          | Eth0  |          |
 
    |          +-------+----------5+-WAN
 
    |          |      | AR8316    |
 
    |    CPU    |      |        +-4+-LAN1
 
    |          | Eth1  |        +-3+-LAN2
 
    |          +-------+0-------+-2+-LAN3
 
    |          |      |        +-1+ (not connected)
 
    +-----------+      +-----------+
 
</pre>
 
 
== issue ==
 
 
=== miniPci problem ===
 
 
on routerboard pro all the 3 miniPci are is incompatible with many non-Atheros miniPCI cards, especially with
 
 
* wifi cards ipw2x00
 
* multi uart 16c650
 
 
 
not tested, but it seems they are supported
 
* TP-Link TL-WN861N wireless minipci card
 
* Ubiquiti SR2 WiFi Mini-PCI Radio
 
 
 
 
==== bad thing happening on pci ====
 
 
<pre>
 
insmod ipw2200
 
 
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kmprq
 
ipw2200: Copyright(c) 2003-2006 Intel Corporation
 
PCI: Enabling device 0000:00:11.0 (0000 -> 0002)
 
PCI: Setting latency timer of device 0000:00:11.0 to 64
 
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
 
PCI error 1 at PCI addr 0x10000024
 
Data bus error, epc == 87141c58, ra == 8714d360
 
Oops[#1]:
 
</pre>
 
 
<pre>
 
Broadcom 43xx wireless support
 
 
pci 0000:00:13.0: BAR 0: assigned [mem 0x10000000-0x10001fff]
 
pci 0000:00:13.0: BAR 0: set to [mem 0x10000000-0x10001fff] (PCI address [0x10000000-0x10001fff])
 
PCI: mapping irq 74 to pin1@0000:00:13.0
 
Switching to clocksource MIPS
 
cfg80211: Calling CRDA to update world regulatory domain
 
Switched to NOHz mode on CPU #0
 
PCI error 1 at PCI addr 0x10001000
 
Data bus error, epc == 80204808, ra == 802f207c
 
</pre>
 
 
 
it seems an hardware issue (may bepossible ???)
 
 
==== reason why ====
 
 
<pre>
 
static struct resource ar71xx_pci_io_resource =
 
      {
 
      .name = "PCI IO space",
 
      .start = 0,
 
      .end = 0,
 
      .flags = IORESOURCE_IO,
 
      };
 
static struct resource ar71xx_pci_mem_resource =
 
      {
 
      .name = "PCI memory space",
 
      .start = AR71XX_PCI_MEM_BASE,
 
      .end = AR71XX_PCI_MEM_BASE + AR71XX_PCI_MEM_SIZE - 1,
 
      .flags = IORESOURCE_MEM
 
      };
 
static struct pci_controller ar71xx_pci_controller =
 
      {
 
      .pci_ops = &ar71xx_pci_ops,
 
      .mem_resource = &ar71xx_pci_mem_resource,
 
      .io_resource = &ar71xx_pci_io_resource,
 
      };
 
</pre>
 
 
 
* pci_io_resource size is equal to 0
 
* the PCI driver for ar71xx currently (1) doesn't support I/O allocations, only memory allocations
 
* therefore any card requiring I/O won't work for now on ar71xx.
 
* I/O can only be accessed indirectly on ar71xx, so the driver needs special handling for I/O accesses.
 
 
 
(1) currently The PCI controller in ar71xx SoCs only provides access to PCI memory space and PCI configuration space, but not to PCI IO space, it is an hardware limitation of  ar71xx SoC, missing hardware able to handle PCI IO space, hardware hack is required with special handling for IO space accesses. Which, in case it is enough to fix the problem, nobody hasn't done yet, and it seems impossible to be fixed.
 
 
see http://en.wikipedia.org/wiki/Conventional_PCI#PCI_command_codes
 
 
 
* '''0010 I/O Read''' - performs a read from I/O space. All 32 bits of the read address are provided, so that a device can (for compatibility reasons) implement less than 4 bytes worth of I/O registers. If the byte enables request data not within the address range supported by the PCI device (e.g. a 4-byte read from a device which only supports 2 bytes of I/O address space), it must be terminated with a target abort. Multiple data cycles are permitted, using linear (simple incrementing) burst ordering.The PCI standard is discouraging the use of I/O space in new devices, preferring that as much as possible be done through main memory mapping.
 
* '''0011 I/O Write''' - performs a write to I/O space.
 
* '''0110 Memory Read''' - performs a read cycle from memory space. Because the smallest memory space a PCI device is permitted to implement is 16 bits, the two least significant bits of the address are not needed; equivalent information will arrive in the form of byte select signals. They instead specify the order in which burst data must be returned. If a device does not support the requested order, it must provide the first word and then disconnect. If a memory space is marked as "prefetchable", then the target device must ignore the byte select signals on a memory read and always return 32 valid bits.
 
* '''0111 Memory Write''' - operates similarly to a memory read. The byte select signals are more important in a write, as unselected bytes must not be written to memory.Generally, PCI writes are faster than PCI reads, because a device can buffer the incoming write data and release the bus faster. For a read, it must delay the data phase until the data has been fetched.
 
 
==== currently working mini pci board ====
 
 
the PCI controller in ar71xx SoCs only provides access to PCI memory space and PCI configuration space, but not to PCI IO space.
 
you need to write special handling for IO space accesses, which handle the pci io request mapping it into a memory request: this piece of code is missing.
 
 
so currently, generally
 
* wont work: any mini pci card that needs PCI IO space
 
* will work: any mini pci card that ONLY needs PCI mem space
 
 
==== may be working board ====
 
 
* Sokeris VPN1411 encryption miniPCI card seems to be PCI_MEM_ONLY, it performs as crypto-hw-hifn-795x for OpenSSL VPN & IPSec hw acceleration
 
 
==== tested board ====
 
 
* wifi tp-link, which is atheros-wifi, it uses pci_mem only
 
 
==== dmesg ====
 
 
* [[Flameman/routerstation-pro/dmesg#2.6.37.my]]
 
 
==== currently not working mini pci board ====
 
 
* wont work uart: PCI one chip solution OXFORD OXuPCI954, for uart 16c950 [http://www.semiconductorstore.com/pdf/newsite/oxford/OXuPCI954_DS.pdf]
 
* wont work sata: PCI one chip solution VIA VT6421A
 
 
==== if you ever thought to build your own miniPCI card ====
 
 
From this bad experience i also understand that the PCI bus specifiction requires appropriate electrical signals for interface logic, so if you want to interface some chip to PCI bus you must use only PCI compliance chips!!!
 
 
One solution is to use commercial ASIC PCI bridge. Another is to implement PCI interface with PCI compliance programmable logic chip. For additional information about PCI interfaces look at PLD vendors site.
 
 
So the conclusion is: if you don't need high transfer data rate use serial or parallel port, or USB bus.
 
 
== mini pci ==
 
 
<h2> <span class="mw-headline" id="Types"> Types </span></h2>
 
<table border="1" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%; color: #000;">
 
<tr>
 
<th> Type </th>
 
<th> Pins
 
</th></tr>
 
<tr>
 
<td> I    </td>
 
<td> 100
 
</td></tr>
 
<tr>
 
<td> II  </td>
 
<td> 100
 
</td></tr>
 
<tr>
 
<td> III  </td>
 
<td> 124
 
</td></tr></table>
 
<h2> <span class="mw-headline" id="Type_I.2FII.2C_100_pin"> Type I/II, 100 pin </span></h2>
 
<table border="1" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%; color: #000;">
 
<tr>
 
<th> Pin  </th>
 
<th> Name
 
</th></tr>
 
<tr>
 
<td> 1    </td>
 
<td> INTB#
 
</td></tr>
 
<tr>
 
<td> 2    </td>
 
<td> +5v
 
</td></tr>
 
<tr>
 
<td> 3    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 4    </td>
 
<td> INTA#
 
</td></tr>
 
<tr>
 
<td> 5    </td>
 
<td> Reserved
 
</td></tr>
 
<tr>
 
<td> 6    </td>
 
<td> Reserved
 
</td></tr>
 
<tr>
 
<td> 7    </td>
 
<td> 3.3AUX
 
</td></tr>
 
<tr>
 
<td> 8    </td>
 
<td> C/BE[1]#
 
</td></tr>
 
<tr>
 
<td> 9    </td>
 
<td> CLK
 
</td></tr>
 
<tr>
 
<td> 10    </td>
 
<td> RST#
 
</td></tr>
 
<tr>
 
<td> 11    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 12    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 13    </td>
 
<td> REQ#
 
</td></tr>
 
<tr>
 
<td> 14    </td>
 
<td> GNT#
 
</td></tr>
 
<tr>
 
<td> 15    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 16    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 17    </td>
 
<td> AD[31]
 
</td></tr>
 
<tr>
 
<td> 18    </td>
 
<td> PME#
 
</td></tr>
 
<tr>
 
<td> 19    </td>
 
<td> AD[29]
 
</td></tr>
 
<tr>
 
<td> 20    </td>
 
<td> Reserved
 
</td></tr>
 
<tr>
 
<td> 21    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 22    </td>
 
<td> AD[30]
 
</td></tr>
 
<tr>
 
<td> 23    </td>
 
<td> AD[27]
 
</td></tr>
 
<tr>
 
<td> 24    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 25    </td>
 
<td> AD[25]
 
</td></tr>
 
<tr>
 
<td> 26    </td>
 
<td> AD[28]
 
</td></tr>
 
<tr>
 
<td> 27    </td>
 
<td> Reserved
 
</td></tr>
 
<tr>
 
<td> 28    </td>
 
<td> AD[28]
 
</td></tr>
 
<tr>
 
<td> 29    </td>
 
<td> C/BE[3]#
 
</td></tr>
 
<tr>
 
<td> 30    </td>
 
<td> AD[24]
 
</td></tr>
 
<tr>
 
<td> 31    </td>
 
<td> AD[23]
 
</td></tr>
 
<tr>
 
<td> 32    </td>
 
<td> IDSEL
 
</td></tr>
 
<tr>
 
<td> 33    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 34    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 35    </td>
 
<td> AD[21]
 
</td></tr>
 
<tr>
 
<td> 36    </td>
 
<td> AD[22]
 
</td></tr>
 
<tr>
 
<td> 37    </td>
 
<td> AD[19]
 
</td></tr>
 
<tr>
 
<td> 38    </td>
 
<td> AD[20]
 
</td></tr>
 
<tr>
 
<td> 39    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 40    </td>
 
<td> PAR
 
</td></tr>
 
<tr>
 
<td> 41    </td>
 
<td> AD[17]
 
</td></tr>
 
<tr>
 
<td> 42    </td>
 
<td> AD[18]
 
</td></tr>
 
<tr>
 
<td> 43    </td>
 
<td> C/BE[2]#
 
</td></tr>
 
<tr>
 
<td> 44    </td>
 
<td> AD[16]
 
</td></tr>
 
<tr>
 
<td> 45    </td>
 
<td> IRDY#
 
</td></tr>
 
<tr>
 
<td> 46    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 47    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 48    </td>
 
<td> Frame#
 
</td></tr>
 
<tr>
 
<td> 49    </td>
 
<td> CLKRUN#
 
</td></tr>
 
<tr>
 
<td> 50    </td>
 
<td> TRDY#
 
</td></tr>
 
<tr>
 
<td> 51    </td>
 
<td> SERR#
 
</td></tr>
 
<tr>
 
<td> 52    </td>
 
<td> STOP#
 
</td></tr>
 
<tr>
 
<td> 53    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 54    </td>
 
<td> +3.3v
 
</td></tr>
 
<tr>
 
<td> 55    </td>
 
<td> PERR#
 
</td></tr>
 
<tr>
 
<td> 56    </td>
 
<td> DEVSEL#
 
</td></tr>
 
<tr>
 
<td> 57    </td>
 
<td> C/BE[1]#
 
</td></tr>
 
<tr>
 
<td> 58    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 59    </td>
 
<td> AD[14]
 
</td></tr>
 
<tr>
 
<td> 60    </td>
 
<td> AD[15]
 
</td></tr>
 
<tr>
 
<td> 61    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 62    </td>
 
<td> AD[13]
 
</td></tr>
 
<tr>
 
<td> 63    </td>
 
<td> AD[12]
 
</td></tr>
 
<tr>
 
<td> 64    </td>
 
<td> AD[11]
 
</td></tr>
 
<tr>
 
<td> 65    </td>
 
<td> AD[10]
 
</td></tr>
 
<tr>
 
<td> 66    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 67    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 68    </td>
 
<td> AD[09]
 
</td></tr>
 
<tr>
 
<td> 69    </td>
 
<td> AD[08]
 
</td></tr>
 
<tr>
 
<td> 70    </td>
 
<td> C/BE[0]#
 
</td></tr>
 
<tr>
 
<td> 71    </td>
 
<td> AD[07]
 
</td></tr>
 
<tr>
 
<td> 72    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 73    </td>
 
<td> 3.3v
 
</td></tr>
 
<tr>
 
<td> 74    </td>
 
<td> AD[06]
 
</td></tr>
 
<tr>
 
<td> 75    </td>
 
<td> AD[05]
 
</td></tr>
 
<tr>
 
<td> 76    </td>
 
<td> AD[04]
 
</td></tr>
 
<tr>
 
<td> 77    </td>
 
<td> Reserved
 
</td></tr>
 
<tr>
 
<td> 78    </td>
 
<td> AD[02]
 
</td></tr>
 
<tr>
 
<td> 79    </td>
 
<td> AD[03]
 
</td></tr>
 
<tr>
 
<td> 80    </td>
 
<td> AD[00]
 
</td></tr>
 
<tr>
 
<td> 81    </td>
 
<td> 5v
 
</td></tr>
 
<tr>
 
<td> 82    </td>
 
<td> Reserved_WIP <sup>1</sup>
 
</td></tr>
 
<tr>
 
<td> 83    </td>
 
<td> AD[01]
 
</td></tr>
 
<tr>
 
<td> 84    </td>
 
<td> Reserved_WIP <sup>1</sup>
 
</td></tr>
 
<tr>
 
<td> 85    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 86    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 87    </td>
 
<td> AC_SYNC
 
</td></tr>
 
<tr>
 
<td> 88    </td>
 
<td> M66EN
 
</td></tr>
 
<tr>
 
<td> 89    </td>
 
<td> AC_SDATA_IN
 
</td></tr>
 
<tr>
 
<td> 90    </td>
 
<td> AC_SDATA_OUT
 
</td></tr>
 
<tr>
 
<td> 91    </td>
 
<td> AC_BIT_CLK
 
</td></tr>
 
<tr>
 
<td> 92    </td>
 
<td> AC_CODEC_ID0#
 
</td></tr>
 
<tr>
 
<td> 93    </td>
 
<td> AC_CODEC_ID1#
 
</td></tr>
 
<tr>
 
<td> 94    </td>
 
<td> AC_RESET#
 
</td></tr>
 
<tr>
 
<td> 95    </td>
 
<td> MOD_AUDIO_MON
 
</td></tr>
 
<tr>
 
<td> 96    </td>
 
<td> Reserved
 
</td></tr>
 
<tr>
 
<td> 97    </td>
 
<td> Audio_GND
 
</td></tr>
 
<tr>
 
<td> 98    </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 99    </td>
 
<td> SYS_AUDIO_OUT
 
</td></tr>
 
<tr>
 
<td> 100  </td>
 
<td> SYS_AUDIO_IN
 
</td></tr></table>
 
<p><sup>1)</sup> WIP=Work in progress
 
</p>
 
<h2> <span class="mw-headline" id="Type_III.2C_124_pin"> Type III, 124 pin </span></h2>
 
<table border="1" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%; color: #000;">
 
<tr>
 
<th> Pin  </th>
 
<th> Name  </th>
 
<th> Description
 
</th></tr>
 
<tr>
 
<td> 1  </td>
 
<td> TIP              </td>
 
<td> 1 Conductor, local loop wire pair
 
</td></tr>
 
<tr>
 
<td> 2  </td>
 
<td> RING              </td>
 
<td> 1 Conductor, local loop wire pair
 
</td></tr>
 
<tr>
 
<td> 3  </td>
 
<td> 8PMJ-3            </td>
 
<td> Pin 3 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 4  </td>
 
<td> 8PMJ-1            </td>
 
<td> Pin 1 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 5  </td>
 
<td> 8PMJ-6            </td>
 
<td> Pin 6 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 6  </td>
 
<td> 8PMJ-2            </td>
 
<td> Pin 2 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 7  </td>
 
<td> 8PMJ-7            </td>
 
<td> Pin 7 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 8  </td>
 
<td> 8PMJ-4            </td>
 
<td> Pin 4 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 9  </td>
 
<td> 8PMJ-8            </td>
 
<td> Pin 8 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 10  </td>
 
<td> 8PMJ-5            </td>
 
<td> Pin 5 of an 8-pin modular jack
 
</td></tr>
 
<tr>
 
<td> 11  </td>
 
<td> LED1_GRNP        </td>
 
<td> Interface for external LEDs
 
</td></tr>
 
<tr>
 
<td> 12  </td>
 
<td> LED2_YELP        </td>
 
<td> Interface for external LEDs
 
</td></tr>
 
<tr>
 
<td> 13  </td>
 
<td> LED1_GRNN        </td>
 
<td> RF Silent input
 
</td></tr>
 
<tr>
 
<td> 14  </td>
 
<td> LED2_YELN        </td>
 
<td> Interface for external LEDs
 
</td></tr>
 
<tr>
 
<td> 15  </td>
 
<td> CHSGND            </td>
 
<td> Chassis Ground
 
</td></tr>
 
<tr>
 
<td> 16  </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 17  </td>
 
<td> INTB#            </td>
 
<td> Interrupt Request B
 
</td></tr>
 
<tr>
 
<td> 18  </td>
 
<td> 5V                </td>
 
<td> 5 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 19  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 20  </td>
 
<td> INTA#            </td>
 
<td> Interrupt Request A
 
</td></tr>
 
<tr>
 
<td> 21  </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 22  </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 23  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 24  </td>
 
<td> 3.3VAUX          </td>
 
<td> 3.3 V supply-uninterrupted
 
</td></tr>
 
<tr>
 
<td> 25  </td>
 
<td> CLK              </td>
 
<td> PCI Clock
 
</td></tr>
 
<tr>
 
<td> 26  </td>
 
<td> RST#              </td>
 
<td> PCI Reset
 
</td></tr>
 
<tr>
 
<td> 27  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 28  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 29  </td>
 
<td> REQ#              </td>
 
<td> PCI Bus Request
 
</td></tr>
 
<tr>
 
<td> 30  </td>
 
<td> GNT#              </td>
 
<td> PCI Bus Grant
 
</td></tr>
 
<tr>
 
<td> 31  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 32  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 33  </td>
 
<td> AD[31]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 34  </td>
 
<td> PME#              </td>
 
<td> Power Management Event
 
</td></tr>
 
<tr>
 
<td> 35  </td>
 
<td> AD[29]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 36  </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 37  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 38  </td>
 
<td> AD[30]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 39  </td>
 
<td> AD[27]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 40  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 41  </td>
 
<td> AD[25]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 42  </td>
 
<td> AD[28]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 43  </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 44  </td>
 
<td> AD[26]            </td>
 
<td> Multiplexed
 
</td></tr>
 
<tr>
 
<td> -  </td>
 
<td> Key              </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> -  </td>
 
<td> -                </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 45  </td>
 
<td> C/BE[3]#          </td>
 
<td> Byte Enable
 
</td></tr>
 
<tr>
 
<td> 46  </td>
 
<td> AD[24]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 47  </td>
 
<td> AD[23]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 48  </td>
 
<td> IDSEL            </td>
 
<td> Initialization Device Select
 
</td></tr>
 
<tr>
 
<td> 49  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 50  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 51  </td>
 
<td> AD[21]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 52  </td>
 
<td> AD[22]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 53  </td>
 
<td> AD[19]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 54  </td>
 
<td> AD[20]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 55  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 56  </td>
 
<td> PAR              </td>
 
<td> Parity Bit
 
</td></tr>
 
<tr>
 
<td> 57  </td>
 
<td> AD[17]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 58  </td>
 
<td> AD[18]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 59  </td>
 
<td> C/BE[2]#          </td>
 
<td> Byte Enable
 
</td></tr>
 
<tr>
 
<td> 60  </td>
 
<td> AD[16]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 61  </td>
 
<td> IRDY#            </td>
 
<td> Initiator Ready
 
</td></tr>
 
<tr>
 
<td> 62  </td>
 
<td> Ground            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 63  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 64  </td>
 
<td> FRAME#            </td>
 
<td> Indicates Bulk Transfer
 
</td></tr>
 
<tr>
 
<td> 65  </td>
 
<td> CLKRUN#          </td>
 
<td> Stops clock on certain mobile PCI devices
 
</td></tr>
 
<tr>
 
<td> 66  </td>
 
<td> TRDY#            </td>
 
<td> Target Ready
 
</td></tr>
 
<tr>
 
<td> 67  </td>
 
<td> SERR#            </td>
 
<td> Catastrophic system error
 
</td></tr>
 
<tr>
 
<td> 68  </td>
 
<td> STOP#            </td>
 
<td> Target wishes to end transfer
 
</td></tr>
 
<tr>
 
<td> 69  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 70  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 71  </td>
 
<td> PERR#            </td>
 
<td> Indicates Parity Error
 
</td></tr>
 
<tr>
 
<td> 72  </td>
 
<td> DEVSEL#          </td>
 
<td> PCI Device Select
 
</td></tr>
 
<tr>
 
<td> 73  </td>
 
<td> C/BE[1]#          </td>
 
<td> Byte Enable
 
</td></tr>
 
<tr>
 
<td> 74  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 75  </td>
 
<td> AD[14]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 76  </td>
 
<td> AD[15]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 77  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 78  </td>
 
<td> AD[13]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 79  </td>
 
<td> AD[12]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 80  </td>
 
<td> AD[11]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 81  </td>
 
<td> AD[10]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 82  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 83  </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 84  </td>
 
<td> AD[09]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 85  </td>
 
<td> AD[08]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 86  </td>
 
<td> C/BE[0]#          </td>
 
<td> Byte Enable
 
</td></tr>
 
<tr>
 
<td> 87  </td>
 
<td> AD[07]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 88  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 89  </td>
 
<td> 3.3V              </td>
 
<td> 3.3 V Supply
 
</td></tr>
 
<tr>
 
<td> 90  </td>
 
<td> AD[06]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 91  </td>
 
<td> AD[05]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 92  </td>
 
<td> AD[04]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 93  </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 94  </td>
 
<td> AD[02]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 95  </td>
 
<td> AD[03]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 96  </td>
 
<td> AD[00]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 97  </td>
 
<td> 5V                </td>
 
<td> 5 V Supply voltage
 
</td></tr>
 
<tr>
 
<td> 98  </td>
 
<td> RESERVED_WIP5    </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 99  </td>
 
<td> AD[01]            </td>
 
<td> Multiplexed Address/Data Bus
 
</td></tr>
 
<tr>
 
<td> 100 </td>
 
<td> RESERVED_WIP5    </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 101 </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 102 </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 103 </td>
 
<td> AC_SYNC          </td>
 
<td> AC97 Sync
 
</td></tr>
 
<tr>
 
<td> 104 </td>
 
<td> M66EN            </td>
 
<td> Enables 66 MHz PCI bus
 
</td></tr>
 
<tr>
 
<td> 105 </td>
 
<td> AC_SDATA_IN      </td>
 
<td> AC97 Data Input
 
</td></tr>
 
<tr>
 
<td> 106 </td>
 
<td> AC_SDATA_OUT      </td>
 
<td> AC97 Data Output
 
</td></tr>
 
<tr>
 
<td> 107 </td>
 
<td> AC_BIT_CLK        </td>
 
<td> AC97 Bit Clock
 
</td></tr>
 
<tr>
 
<td> 108 </td>
 
<td> AC_CODEC_ID0#    </td>
 
<td> Identifier for AC97 CODEC
 
</td></tr>
 
<tr>
 
<td> 109 </td>
 
<td> AC_CODEC_ID1#    </td>
 
<td> Identifier for AC97 CODEC
 
</td></tr>
 
<tr>
 
<td> 110 </td>
 
<td> AC_RESET#        </td>
 
<td> AC97 Reset
 
</td></tr>
 
<tr>
 
<td> 111 </td>
 
<td> MOD_AUDIO_MON    </td>
 
<td> Modern Audio Monitor
 
</td></tr>
 
<tr>
 
<td> 112 </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 113 </td>
 
<td> AUDIO_GND        </td>
 
<td> Analog Ground for line-level audio
 
</td></tr>
 
<tr>
 
<td> 114 </td>
 
<td> GROUND            </td>
 
<td> Ground
 
</td></tr>
 
<tr>
 
<td> 115 </td>
 
<td> SYS_AUDIO_OUT    </td>
 
<td> Telephone Audio Out
 
</td></tr>
 
<tr>
 
<td> 116 </td>
 
<td> SYS_AUDIO_IN      </td>
 
<td> Telephone Audio In
 
</td></tr>
 
<tr>
 
<td> 117 </td>
 
<td> SYS_AUDIO_OUT GND </td>
 
<td> Analog Ground for telephone audio
 
</td></tr>
 
<tr>
 
<td> 118 </td>
 
<td> SYS_AUDIO_IN GND  </td>
 
<td> Analog Ground for telephone audio
 
</td></tr>
 
<tr>
 
<td> 119 </td>
 
<td> AUDIO_GND        </td>
 
<td> Analog Ground for line-level audio
 
</td></tr>
 
<tr>
 
<td> 120 </td>
 
<td> AUDIO_GND        </td>
 
<td> Analog Ground for line-level audio
 
</td></tr>
 
<tr>
 
<td> 121 </td>
 
<td> RESERVED          </td>
 
<td> -
 
</td></tr>
 
<tr>
 
<td> 122 </td>
 
<td> MPCIACT#          </td>
 
<td> MiniPCI Function Active
 
</td></tr>
 
<tr>
 
<td> 123 </td>
 
<td> VCC5VA            </td>
 
<td> 5V Analog
 
</td></tr>
 
<tr>
 
<td> 124 </td>
 
<td> 3.3VAUX          </td>
 
<td> 3.3 V supply-uninterrupted
 
</td></tr>
 
</table>
 
 
== an idea to install openWrt ==
 
 
=== Setup instructions ===
 
 
You will need the following:
 
 
* A serial cable - female to female (or female to male + gender changer). The cable must be straight through, *not* a null modem cable.
 
* USB flash drive or hard disk that is able to be powered from the board's USB port.
 
* tftp server installed on your workstation.
 
 
=== Preparation ===
 
 
The following instructions assume that /dev/sdb corresponds to the USB disk when it is plugged into your workstation. If this is not the case in your setup, please be careful to substitute the correct device name in all commands where appropriate.
 
 
    Build an image using "routerstationpro" as the MACHINE. For example, you can build core-image-minimal.
 
    Partition the USB drive so that primary partition 1 is type Linux (83). Minimum size depends on your root image size - core-image-minimal probably only needs 8-16MB, while other images will need more.# fdisk /dev/sdb
 
    Command (m for help): pDisk /dev/sdb: 4011 MB, 4011491328 bytes
 
    124 heads, 62 sectors/track, 1019 cylinders, total 7834944 sectors
 
    Units = sectors of 1 * 512 = 512 bytes
 
    Sector size (logical/physical): 512 bytes / 512 bytes
 
    I/O size (minimum/optimal): 512 bytes / 512 bytes
 
    Disk identifier: 0x0009e87dDevice Boot Start End Blocks Id System
 
    /dev/sdb1 62 1952751 976345 83 Linux
 
    Format partition 1 on the USB as ext3# mke2fs -j /dev/sdb1
 
    Mount partition 1 and then extract the contents of tmp/deploy/images/core-image-XXXX.tar.bz2 into it (preserving permissions).# mount /dev/sdb1 /media/sdb1
 
    # cd /media/sdb1
 
    # tar -xvjpf tmp/deploy/images/core-image-XXXX.tar.bz2
 
    Unmount the USB drive and then plug it into the board's USB port
 
    Connect the board's serial port to your workstation and then start up your favourite serial terminal so that you will be able to interact with the serial console. If you don't have a favourite, picocom is suggested:$ picocom /dev/ttyUSB0 -b 115200
 
    Connect the network into eth0 (the one that is NOT the 3 port switch). If you are using power-over-ethernet then the board will power up at this point.
 
    Start up the board, watch the serial console. Hit Ctrl+C to abort the autostart if the board is configured that way (it is by default). The bootloader's fconfig command can be used to disable autostart and configure the IP settings if you need to change them (default IP is 192.168.1.20).
 
    Make the kernel (tmp/deploy/images/vmlinux-routerstationpro.bin) available on the tftp server.
 
    If you are going to write the kernel to flash, remove the current kernel and rootfs flash partitions. You can list the partitions using the following bootloader command:RedBoot> fis list
 
    You can delete the existing kernel and rootfs with these commands:RedBoot> fis delete kernel
 
    RedBoot> fis delete rootfs
 
 
=== Booting a Kernel Directly ===
 
 
Load the kernel using the following bootloader command:
 
 
<pre>
 
RedBoot> load -m tftp kernel-ubiquiti.bin
 
</pre>
 
 
You should see a message on it being successfully loaded.
 
 
Execute the kernel:
 
 
<pre>
 
RedBoot> exec -c "console=ttyS0,115200 root=/dev/sda1 rw rootdelay=2 board=UBNT-RSPRO"
 
</pre>
 
 
 
NOTE: Specifying the command line with -c is important as linux-yocto does not provide a default command line.
 
 
NOTE:
 
you MUST declare board=UBNT-RSPRO, case the kernel needs this information to enable specific hw initialization, if you do not provide board=UBNT-RSPRO the kernel will consider "generic" profile (no usb, no ethernet, etc)
 
 
=== Writing a Kernel to Flash ===
 
 
Go to your tftp server and gzip the kernel you want in flash. It should halve the size.
 
 
Load the kernel using the following bootloader command:
 
 
<pre>
 
RedBoot> load -r -b 0x80600000 -m tftp -h kernel-ubiquiti.bin.gz
 
</pre>
 
 
This command should output something similar to the following:Raw file loaded 0x80600000-0x8087c537, assumed entry at 0x80600000
 
 
Calculate the length by subtracting the first number from the second number and then rounding the result up to the nearest 0x1000.
 
 
Using the length calculated above, create a flash partition for the kernel
 
 
<pre>
 
RedBoot> fis create -b 0x80600000 -l 0x240000 kernel
 
</pre>
 
 
NOTE: Change 0x240000 to your rounded length and change "kernel" to whatever you want to name your kernel
 
 
=== Booting a Kernel from Flash ===
 
 
To boot the flashed kernel perform the following steps.
 
 
At the bootloader prompt, load the kernel
 
 
<pre>
 
RedBoot> fis load -d -e kernel
 
</pre>
 
 
NOTE: Change the name "kernel" above if you chose something different earlier. Also, -e means 'elf' and -d means 'decompress'.
 
 
Execute the kernel using the exec command as above.
 
 
=== Automating the Boot Process ===
 
 
After writing the kernel to flash and testing the load and exec commands manually, you can automate the boot process with a boot script.
 
 
<pre>
 
RedBoot> fconfig
 
</pre>
 
 
NOTE: Answer the questions not specified here as they pertain to your environment.
 
 
 
<pre>
 
Run script at boot: trueBoot
 
script:
 
  .. fis load -d -e kernel
 
    .. exec
 
    Enter script, terminate with empty line>> fis load -d -e kernel
 
>> exec -c "console=ttyS0,115200 root=/dev/sda1 rw rootdelay=2 board=UBNT-RSPRO"
 
>>
 
</pre>
 
 
 
Answer the remaining questions and write the changes to flash:
 
 
<pre>
 
Update RedBoot non-volatile configuration - continue (y/n)? y
 
... Erase from 0xbfff0000-0xc0000000: .
 
... Program from 0x87ff0000-0x88000000 at 0xbfff0000: .
 
Power cycle the board.
 
</pre>
 
 
== other os ==
 
 
=== openwrt (linux) ===
 
 
* [http://wiki.openwrt.org/doc/howto/build how to build openWRT]
 
 
=== freebsd/mips ??? ===
 
 
* [http://wiki.freebsd.org/FreeBSD/mips/UBNT-RouterStation freeBSD porting status]
 
 
=== Category ===
 
 
[[Category:Mips]]
 

Latest revision as of 08:31, 26 January 2020

For more interesting projects done by Flameman&Legacy, be sure to check out their project index


this page is under development ...