Skip to content

Commit

Permalink
docs: updated diary and build guide for v5
Browse files Browse the repository at this point in the history
  • Loading branch information
osy committed Nov 3, 2024
1 parent 7bb9454 commit 1b0baa3
Show file tree
Hide file tree
Showing 9 changed files with 145 additions and 46 deletions.
130 changes: 95 additions & 35 deletions Docs/Build_Guide.md

Large diffs are not rendered by default.

25 changes: 21 additions & 4 deletions Docs/Diary.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,27 @@ Another issue discovered was that devices plugged into the USB hub would be disc

[![Board current measurement](images/current_measure.jpg)](images/current_measure.jpg)

## Final Build
### Rev. 5
In addition to using a beefier LDO, we also connected a SPI flash to the VIA USB hub. Although the SPI flash was listed as optional in the datasheet, we found that USB 3.0 often caused errors in Windows and we hypothesized that the issue was due to outdated microcode that could be updated by a firmware stored in the SPI flash. We tested this by building a separate board with just the USB hub and confirmed this was indeed the fix.

[![Board rev 5](images/board_v5.png)](images/board_v5.png)

We also took the opportunity to reorganize the board layout. First, we moved the decoupling capacitors for the two USB ICs to the bottom layer. Previously, we avoided any components on the bottom layer for cost reasons but after observing the current consumption of the USB hub, we decided it would be safer to properly follow design recommendations and place the caps directly underneath the IC for better handling of sudden current spikes. This also means we have more space on top to follow other best practice guidelines such as putting Rbias and the crystal closer to the pads. Ultimately, the number of components on the bottom is quite small and can be manually soldered in small runs.

Since we no longer need to stuff all these components close to each other, we also were able to increase the minimum drill size from 0.15mm to 0.3mm. This introduces significant cost savings in manufacturing.

Finally, we moved the power passthrough from the bottom edge to a second connector on the top. Originally, we wanted to plug the original board directly into our board in a 90 degree orientation. This was awkward to manage and did not work with larger GPUs. Instead, a better way is to introduce a second 20-pin connector along with a custom passthrough cable.

[![Power connector](images/power_connector.png)](images/power_connector.png)

### Lite
By popular demand, we also introduced a "lite" variant of the board which is cost-optimized to work with the minimal number of components. We removed the USB ICs and associated power controllers and added an ATX-24 connector.

[![Board lite rev 5](images/board_lite_v5.png)](images/board_lite_v5.png)

We chose to match the form factor to the ADT-UT3G in order to be compatible with third party case designs.

## Final Build (rev. 4)
Originally, we wanted to fit a 2 slot GPU into the case, which meant we could have daisy chained the PCIe power PCB on the side. However, after getting a NVIDIA RTX 4070 Ti SUPER (a 2.7 slot card), we had to adapt the power connector. The solution was to make a [riser cable](../Power_Riser) for the power connector which allowed us to mount (tape) the power PCB to the top of the enclosure.

[![Power riser cable](images/power_riser_cable.jpg)](images/power_riser_cable.jpg)
Expand Down Expand Up @@ -137,6 +157,3 @@ The XG Station Pro's power supply is rated for 330W and the Ally charging maxes
The XG Station Pro has two case fans but we removed one of them for space issues and we kept the other one disconnected in order to reduce power consumption (and because the fan sit behind the GPU's backplate). As a result, the case fans were not used.

At 265W, we ran FurMark for 45 minutes and there was no thermal throttling. The GPU temperatures stabilized at 70C while the outside of the case got to 47C. The power supply was around 38C. Ambient temperature was 25C.

## Remaining Issue
Although this project is considered "finished", there is still an unresolved issue with the USB hub. It seems that only USB 2.0 works and that many USB 3.0 devices error out. Additionally, we were made aware of the fact that the VL822-Q7 has been discontinued and will not be available for new purchase at JLCPCB. This means that one of the first things to do in a follow up project would be to replace the VL822-Q7 with either a newer (and properly documented) chip or to just pass through the USB signals directly to a port where an external charging hub can be used.
Binary file added Docs/images/board_lite_v5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Docs/images/board_v5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/images/power_connector.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/images/power_riser_cable_v2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/images/xg_mobile_station_build_1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/images/xg_mobile_station_build_2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 29 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ This open source hardware allows you to connect any PCIe card to an ASUS ROG dev

[![Board 3D model](Docs/images/board-3d.png)](Docs/images/board-3d.png)

The standard variant is a drop-in replacement PCB for the [XG Station Pro Thunderbolt 3 eGPU dock][1]. It contains a built in USB 3.1 Gen 2 hub and a 100W USB PD charger.
The standard variant is a drop-in replacement PCB for the [XG Station Pro Thunderbolt 3 eGPU dock][1]. It contains a built in USB 3.1 Gen 2 hub and a USB PD charger.

[![Board 3D model](Docs/images/board-lite-3d.png)](Docs/images/board-lite-3d.png)

The lite variant is a drop-in replacement PCB for the [ADT-UT3G][6]. It requires a standard ATX power supply and passes through the USB to an external port.

## Features
* PCIe 4.0 x8 support for 2022/2023 ROG Flow
* PCIe 3.0 x8 support for 2021/2022/2023 ROG Flow (4.0 currently untested)
* PCIe 4.0 x4 support for 2023 ROG Ally
* MCU handling cable detection and LEDs
* 100W USB PD charger (standard variant)
* 65W USB PD charger (standard variant)
* 2 USB-C ports connected to a USB 3.1 Gen 2 hub (standard variant)

## Getting Started
Expand All @@ -23,12 +23,13 @@ The lite variant is a drop-in replacement PCB for the [ADT-UT3G][6]. It requires
3. [Install the software](#install-xgmactivator)

### Flashing Firmware
Lite boards only need to flash STM32 while the standard board requires writing two SPI flash as well.

#### STM32 MCU
1. Download `XG_Mobile_Dock_MCU.bin` from the latest release or [build your own](Docs/Build_Guide.md#mcu).
2. Download and install [ST32CubeProgrammer][2].
3. Connect your ST-LINK v2 to your computer. Note if you are using a cheap clone from Amazon or Aliexpress, the pin numbers printed on the device may be incorrect.
4. Connect the SWDIO, SWCLK, and GND pins to J10 on the board to the ST-LINK v2. Do not connect +3V3.
4. Connect the SWDIO, SWCLK, and GND pins to J10 on the board to the ST-LINK v2. Do not connect +3V3. If you are using an official ST-LINK, you will need a jumper wire from VAPP (pin 1) to VDD (pin 19).
5. Ensure the board is powered on so it can be programmed.
6. Open ST32CubeProgrammer and go to the "Erasing & programming" page (second icon on the left sidebar).
7. Browse and select the firmware file.
Expand All @@ -44,10 +45,19 @@ We will be using a Raspberry Pi, although most other SBC can also work as well a
4. Download `XG_Mobile_Dock_Charger.bin` from the latest release or [build your own](Docs/Build_Guide.md#ti-pd-controller).
5. Flash the firmware: `sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -w XG_Mobile_Dock_Charger.bin`

### Install XGMActivator
XGMActivator is a simple Windows service that tricks ARMORY CRATE software into identifying the custom dock as an official XG Mobile device. Once installed, it should work even if ARMORY CRATE software is updated. You can check out the [source code here](XGMActivator/XGMActivator.c).
#### SPI Flash for VIA USB Hub
We will be using a Raspberry Pi, although most other SBC can also work as well as dedicated SPI flashers.

1. [Enable the SPI interface on the Raspberry Pi.][3]
2. Connect GND (Ground), SS (SPI0 CE0), CLK (SPI0 SCLK), MISO (SPI0 MISO), and MOSI (SPI0 MOSI) on J13 [to the Raspberry Pi][4]. Note the order of the pins is different from J9.
3. Open a shell to the Raspberry Pi and install Flashrom if it is not already installed: `sudo apt-get install flashrom`
4. Download `VL822_Q7_9043_Phantom_20220616.bin` from the latest release.
5. Flash the firmware: `sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -w VL822_Q7_9043_Phantom_20220616.bin`

### Install XGMDriver
XGMDriver tricks ARMORY CRATE software into identifying the custom dock as an official XG Mobile device. Once installed, it should work even if ARMORY CRATE software is updated. You can check out the [source code here](XGMDriver).

1. Download `XGMActivator_Setup.msi` from the latest release.
1. Download `XGMDriverSetup.exe` from the latest release.
2. Run the installer making sure to correctly select AMD or NVIDIA depending on the vendor of the GPU you are installing.
3. If you need to swap between AMD and NVIDIA, uninstall from Control Panel or by running the installer again. Then you can re-install and select the right option.

Expand All @@ -59,6 +69,18 @@ This is a well known issue with NVIDIA eGPUs. Once the eGPU is installed along w
### PCIe is only getting 3.0 speeds
You need to restart your device. For some reason, hot plugging sometimes results in 3.0 speeds.

### No popup when XGM is connected
Sometimes, the device will not be detected and you can flip the lock switch off and on again to force the software to re-detect the device.

### "It appears that your XG Mobile is not properly connected..."
If you get a pop-up saying XG Mobile is not properly connected, make sure [XGMDriver](#install-xgmdriver) is installed. If this is still an issue with XGMDriver installed, there is likely a connection issue with the cable.

### ASUS Driver install popup on reboot
Re-install XGMDriver to inhibit the ASUS driver popup.

### Lite: USB is not detected
The lite board does not have USB orientation detection. Try flipping the USB-C cable upside down and try again.

## References
Knowledge base for all things XGM gathered from reverse engineering the hardware and software.

Expand Down

0 comments on commit 1b0baa3

Please sign in to comment.