This open source hardware allows you to connect any PCIe card to an ASUS ROG device with the XG Mobile connector.
The standard variant is a drop-in replacement PCB for the XG Station Pro Thunderbolt 3 eGPU dock. It contains a built in USB 3.1 Gen 2 hub and a USB PD charger.
The lite variant is a drop-in replacement PCB for the ADT-UT3G. It requires a standard ATX power supply and passes through the USB to an external port.
- 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
- 65W USB PD charger (standard variant)
- 2 USB-C ports connected to a USB 3.1 Gen 2 hub (standard variant)
Lite boards only need to flash STM32 while the standard board requires writing two SPI flash as well.
- Download
XG_Mobile_Dock_MCU.bin
from the latest release or build your own. - Download and install ST32CubeProgrammer.
- 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.
- 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).
- Ensure the board is powered on so it can be programmed.
- Open ST32CubeProgrammer and go to the "Erasing & programming" page (second icon on the left sidebar).
- Browse and select the firmware file.
- Check "Run after programming"
- Click "Connect" on the right sidebar and then "Start Programming" on the left.
We will be using a Raspberry Pi, although most other SBC can also work as well as dedicated SPI flashers.
- Enable the SPI interface on the Raspberry Pi.
- Connect GND (Ground), SS (SPI0 CE0), CLK (SPI0 SCLK), MISO (SPI0 MISO), and MOSI (SPI0 MOSI) on J9 to the Raspberry Pi.
- Open a shell to the Raspberry Pi and install Flashrom:
sudo apt-get install flashrom
- Download
XG_Mobile_Dock_Charger.bin
from the latest release or build your own. - Flash the firmware:
sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -w XG_Mobile_Dock_Charger.bin
We will be using a Raspberry Pi, although most other SBC can also work as well as dedicated SPI flashers.
- Enable the SPI interface on the Raspberry Pi.
- Connect GND (Ground), SS (SPI0 CE0), CLK (SPI0 SCLK), MISO (SPI0 MISO), and MOSI (SPI0 MOSI) on J13 to the Raspberry Pi. Note the order of the pins is different from J9.
- Open a shell to the Raspberry Pi and install Flashrom if it is not already installed:
sudo apt-get install flashrom
- Download
VL822_Q7_9043_Phantom_20220616.bin
from the latest release. - Flash the firmware:
sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -w VL822_Q7_9043_Phantom_20220616.bin
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.
- Download
XGMDriverSetup.exe
from the latest release. - Run the installer making sure to correctly select AMD or NVIDIA depending on the vendor of the GPU you are installing.
- 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.
This is a well known issue with NVIDIA eGPUs. Once the eGPU is installed along with the correct drivers, you will need to install this script.
You need to restart your device. For some reason, hot plugging sometimes results in 3.0 speeds.
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.
If you get a pop-up saying XG Mobile is not properly connected, make sure XGMDriver is installed. If this is still an issue with XGMDriver installed, there is likely a connection issue with the cable.
Re-install XGMDriver to inhibit the ASUS driver popup.
The lite board does not have USB orientation detection. Try flipping the USB-C cable upside down and try again.
Knowledge base for all things XGM gathered from reverse engineering the hardware and software.