The PCI-Express port

The other thing I didn't like about the hardware of the thin client was the lack of a GBit Ethernet-port. For a thin client, not having one isn't that bad, but I was trying to convert it into something that would also serve files from hard disks. While my HDs arent the quickest around, even they can spit out data at a rate faster than the 100MBit Ethernet-connection, so I'd much rather have a GBit port.

I saw two ways to hack GBit Ethernet into the board. The first was to replace the existing network hardware: while the processor has a built-in GBit Ethernet-mac, the PHY and magnetics didn't support that speed. I could rip these out, and then wire in the hardware from another 1GBit network card. The other alternative was to replace the GPU. The T5325 has an on-board XGI Volari GPU chip, which is hooked into the system using a PCI Express x1 link. If I could rip off the GPU and connect the pads of the PCIE link to a PCIEx1 slot, I could plug a GbE networkcard into that.

While both methods sounded viable, I had the components for none of them around: I had neither a GBit PHY nor a PCIE network card. I decided to order them both online and see what arrived earlier.

The winner turned out to be the GBit PCIE-card, shown here in a PCIE socket I ripped off a dead mainboard. The idea was to glue the socket to the PCB of the T5325 and hook it up, using thin wiring, to the pads where the GPU used to sit on. A minimal PCIEx1 implementation only needs power and three signal pairs to go to the slot, which meant a total of (in my case) eight wires. Should be doable.

But first of all, the GPU has to go, preferably without damaging the PCB or other components. The GPU is a chip in a BGA package, which you can only desolder using hot air. I did it the ghetto way: wrap the PCB in aluminium foil so the rest of the components won't get damaged and heat the chip with a paint stripper until the solder balls on the underside melt.

In the end, I only had a few complications. I managed to lift the GPU off with only most of the solder balls melted, so I pulled a few pads. Luckily, it turned out the pads I needed still were OK. I also managed overheat a capacitor, the one on the left in front of the USB ports, which was easily replaced.

Now I had a problem: because I couldn't find the datasheet of the GPU chip, I didn't know the exact location of the PCIE pins. Luckily I did have the pinout of the CPU, so I managed to find the correct pads by holding a little wire connected to an ohmmeter to the correct ball of the CPU and measuring where the signal went. The two data-pairs also have two capacitors in series, just like the SATA-lines have, so I could zoom in on them quite fast. The clock lines proved a bit more of a problem: they had no series capacitors and the balls on the CPU weren't along the side, so I couldn't easily reach them. After a lot of poking between the CPUs solder balls, I eventually managed to find them too, though.

Super-zoom in activate! As you can see, you need a bit of a steady hand to solder wires to a BGA footprint.

And this is the end result. As I did with the SATA lines, I twisted the signal pairs to minimize interference and dropped a bit of epoxy glue on the wires to secure them in place. The long wires to the capacitor on the side feed 3.3V into the PCIE-slot. Officially, you need to supply 12V to the slot too, but the GBit-card I had didn't use it, so I never bothered.

There's only one more thing. The GBit ethernet card already has series capacitors in one pair of data-lines, so the pair on the same lines the T5325 is superfluous and can actually damage the signals. I replaced them with shorts.

And this is the end result, with the PCIE card plugged in. To check if it actually works, I hooked up a HD, a serial cable and power and booted into Linux:

jeroen@macse:~$ lspci
00:00.0 Memory controller: Marvell Technology Group Ltd. 88F6281 [Kirkwood] ARM SoC (rev 03)
00:01.0 Ethernet controller: Marvell Technology Group Ltd. 88E8075 PCI-E Gigabit Ethernet Controller (rev 10)
It works!

« Prev 3 Next »

© 2006-2016 Sprite_tm - Contact