Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Rupa X88 Pro 13 - RK3528 board with images

Featured Replies

Hi there, I also bought one (V1.5) and tried to use armbian. Unfortunately, I managed to brick it. I booted your image @johlnx from sd, that worked. Then I overwrote the internal EMMC with your image and the box won't boot anymore. Any idea how I can fix it? I made an backup of the original image, but I also read that it may be incomplete because of read protection in uboot of the emmc? I also tried to get into MaskMode by pressing the button and connecting the USB 2.0 to my Windows-PC but no device is discovered. I attached the serial uboot log. Hope somebody has a suggestion how i can boot something again. Thanks

boot_with_armbian_sd_insert.log boot_without_sd_insert.log

@shexplorer
 

I did something similar to a tv box i had around, not this model.

 

Generally, the cpu comes with some sort of uboot. Written in firmware not emmc. The catch is that that uboot usually writes its persistent environment on the eMMC. And most of the time its not even a file on a partition, like in (and this is an example) between bytes 2000 to 8000 of the mmc. This uboot is only visible via serial console. no hdmi output. (and its quite old)

 

This uboot then attempts to chainload the mmc or usb uboot. And its at this phase you get image.

So on my setup, i had CPU uboot but no environment (because i smashed it with my armbian image...), and that environment was needed to boot both mmc or usb.

 

Using a serial port (and pressing control +c ) i was able to instruct uboot it to boot armbian on the usb drive. And i mean manually with command like fatload 0x1000000 usb0.1 linux.img.

 

But every time i reloaded would go back to the endless loop.


So the next step was to find a stock image of my device and dump it into the emmc, via usb booted linux. (i actually only copied like the 1st 10MB, only needed uboot env, not the chinese android)

 

Please know that this is not the image you download from any manufacturer website, those are snap-in upgrades that only change part of the emmc, you need a image that someone extracted with dd command from the entire mmc.

 

 

After that i swore to never touch that emmc again...

Maybe this is your problem too
Get a serial connected to your device and check if you can see the cpu level uboot.

If it is the same issue, maybe someone here can give you the 1st 10MB of their device, if you create a new thread asking for it.

Edited to place the "e" on emmc. tnx johlnx for the fix

Edited by Joao Cordeiro

@shexplorer, connect it to the internal serial port using a USB-to-serial adapter. If you don’t have one, they’re very cheap—search for CH340G on Amazon.
 

Quick safety guide on serial adapters:
1 - Your device has 3.3v serial , check the jumper on the CH340G to make sure its on 3.3v and not 5v
2 - DO NOT CONNECT VCC/3.3v/5v Pin!!! 
	Only connect:
		ground 
		RX 
		TX
3 - Connect ground from to ground from device
	Connect RX from usb to TX from device
	Connect TX from usb to RX from device



Let us know if you are having issues with the bound rate or the pinout on your serial header in your device (send us a picture, in that case)

Once you get serial, you should see the boot looping endlessly, holding control + c should stop the loop.

Then you get an uboot console.
there you can chainload your usb or external mmc uboot.

With something similar to(ask chatgpt to help you in case of issues):
 

usb start      # starts usb devices
usb tree       # lists devices and partitions
usb info       # shows USB device info
ls usb 0:1 /   # lists files on partition 1 of usb 0

fatload usb 0:1 0x82000000 u-boot.bin 
# 0x82000000 is an example that may work. if it does not, ask chatgpt for other values
# u-boot.bin is the usb uboot you want to chanload, might have another name.... ls usb 0:1 will help you find other files
#
go 0x82000000 # chainloads what you loaded into 0x82000000 memory address. if you change this on the previous line, change it here also.

 

 

Besides trying to chainload uboot, you can also load linux kernel + initrd + dbt files directly. Again, chatgpt will help you with those commands. But i found chainloading usb uboot easier.

 

It you reach linux console, remember that once you reboot, everything will loop again. So you need to fix what you did to the emmc before rebooting.

You have 3 options to fix:


1 - Restore your full backup. -> you get manufactorer android back


2 - Restore 10MB of your backup or johlnx's backup -> you should be able to boot again from usb or external mmc


3 - You can calculate exacly what you need to copy, to maintain your emmc linux but also recover uboot.

There should be some space between the partition table data and the 1st partition.
Lets imagine, GPT uses 1MB and 1st partition starts at 10MB, you can copy the data between 1MB and 10MB from your backup into the space between 1MB and 10MB of your EMMC. (this is not trivial to do, but again chatgpt can help)
This way, you still have a linux on the EMMC, but you have recovered the Uboot env.

Edited by Joao Cordeiro

Hi,

first of all thank you for your support. Unfortunately, I could not get it to work. I just don't want to boot anything I store on the SD card. Also, the CTRL+C method won't work. I have to reset the board manually after every try and when powering on while holding CTRL+C the only thing I see in the console is "SPL Hotkey: ctrl+c" as additional line. Maybe the only option is to get into Mask Mode and flash the emmc over USB. But the onboard button won't work to enable it at boot. Maybe I can short some pads but without labeling I dont know which. I attached some output logs and photos of the board.

X88Pro13_Front (2).jpg

X88Pro13_Back (2).jpg

boot_with_armbian_sd_insert.log boot_with_ctrl_c.txt boot_without_sd_insert.log

@shexplorer 

Control +c should have worked after:
 

U-Boot SPL board init
U-Boot SPL 2017.09_armbian-2017.09-S93fe-Pe5fd-Hbdb5-Va5b2-Bbf55-R448a (Nov 06 2025 - 16:35:49)
SPL Hotkey: ctrl+c


Make sure that USB TX is well connected to RX and try to spam it. Or use another terminal emulator, like putty instead of screen on a bash terminal. Maybe control is being intercepted.

Edited by Joao Cordeiro

@shexplorer I am in the same situation with my x88pro13 box not booting and I do not manage to go in Maskrom mode. Any progress on your side ?

I finally managed to boot in Maskrom mode by shorting the clock pin (red circle on the picture) to ground, then loading the loader (rk3528_spl_loader_v1.07.104.bin) and u-boot with rkdeveloptool. PXL_20260223_0707173432.thumb.jpg.61e81c455e43d1ced75e185f93cdd8d3.jpg

@sr4armbian

I know of at least 3 main issues:
no wifi
LAN is 100mbps limited
usb is 2.0 limited

Also does not look like anyone is actively developing this.

Since i use this as a server, i know that HDMI works to the point of showing the console, but i have no experience on a desktop environment.


If you dont yet have one of this devices, dont buy one to get a linux box. Not worth it.

Edited by Joao Cordeiro

  • Author

I own the one of the 1st post and I managed to run Kodi desktop within Armbian. Just did few tests as I don't know how to set up remote control and many other things. 

HDMI works fine but no hardware acceleration for H265 videos (or at least doesn't work smooth enough as in the Android FW).

LAN also works but is HW limited to 100mbps as stated by Joao

I have compiled debian trixie image from the repository of @johlnx for Vontar DQ08 4G+64G and flashed it to eMMC, also adjusting the DTB for wifi GPIOs.

Wifi works with the brcm4335 firmware (at least in the 2.4GHz band), usb3.0 works too.

Bluetooth does not work and there are still many nasty error messages in the 'dmesg' output.

 

Android DTB itself is broken in many ways, mainly because wifi gpios from DTB do not show up in the gpioinfo output.

It is more important to put the brcm4335-sdio firmware in /lib/firmware/brcm, which is missing in the armbian repository.

iw phy0 info shows support of the 5GHz channels, but i don't have such access points nearby. I will check tomorrow with my

dual-band AP.

 

I have posted a new release on GitHub. Improved version.

https://github.com/joilg/x88pro

New:

Support for Seekwave EA6521 Wifi Chip on Hardware Version 1.4 

Frontdisplay shows now Systen Clock. 

USB3 support now SuperSpeed (5Gbps)

IR Remote control implenented

Target OS Ubuntu resolute 26.01

LAN is limited to 100mbps. 

(major advantage is the low quiescent current in standby mode. An external PHY with 1Gbps consumes a significant amount of power in Wake-on-LAN mod)

 

 

Feedback welcome. 

@johlnx I will give it a try.

The main reason i bought this board was to place it on my parrents house as a backup storage device.
Thats why i wanted the 1 Gbps port. And i understand that i would never get 1Gbps lan -> disk transfer with encryption and such, but 100Mbps is 10 times less. I would be happy with 200Mbps or 300Mbps actual performance. without gigabit support its limited to 100Mbps 😕

And thanks for the reply on the github "
The board lacks an external Gigabit PHY; the internal PHY supports only 4 lines, which limits the speed to 100 Mbps." I understand that its physicaly impossible. So im just saying "im sad"

I can probably get more than 100Mbps using wifi :P

Am 4.6.2026 um 17:01 schrieb johlnx:

I have posted a new release on GitHub. Improved version.

https://github.com/joilg/x88pro

New:

Support for Seekwave EA6521 Wifi Chip on Hardware Version 1.4 

Frontdisplay shows now Systen Clock. 

USB3 support now SuperSpeed (5Gbps)

IR Remote control implenented

Target OS Ubuntu resolute 26.01

LAN is limited to 100mbps. 

(major advantage is the low quiescent current in standby mode. An external PHY with 1Gbps consumes a significant amount of power in Wake-on-LAN mod)

 

 

Feedback welcome. 

 

Please don't test it yet. I have a problem with my development environment. I will upload a new version once I've resolved it.

 

new Version avaliable https://github.com/joilg/x88pro/releases/tag/0.6

New:

  • Support now Hardware Version 1.4+ (EA6521 WIFI Chip) for WIFI and Bluetooth
  • Display driver for HT1628
  • IR Remote
  • USB 3.0 SuperSpeed (5Gbps)
  • Ubuntu resolute 26.04 target OS

please Test it now.

photo_2026-06-09_21-50-31.jpg

I tried 0.6, wifi not working, i own one with EA6521.

 

I made it work on 0.5 changing the .dts a little bit (thanks to Claude)

Quote:
 

cat /proc/device-tree/seekwcn_boot/gpio_chip_en 2>/dev/null | od -An -tu4

603979776  285212672          0


 

Quote

 

Those values decoded: 0x24000000 = gpiochip reference, 0x11000000 = pin 17, 0x00000000 = flags. So gpio_chip_en is still pin 17 (GPIO 49) — the old wrong value. The DTB patches didn't survive the OS reinstall.

We need to redo all the fixes we established work:

 

 

# Fix seekwcn_boot GPIOs
sed -i 's/gpio_host_wake = <0x24 0x06 0x01>/gpio_host_wake = <0x24 0x12 0x00>/' /tmp/x88pro.dts
sed -i 's/gpio_chip_wake = <0x24 0x10 0x00>/gpio_chip_wake = <0x24 0x11 0x00>/' /tmp/x88pro.dts
sed -i 's/gpio_chip_en = <0x24 0x11 0x00>/gpio_chip_en = <0x24 0x06 0x00>/' /tmp/x88pro.dts

# Fix sdio-pwrseq reset-gpios
sed -i 's/post-power-on-delay-ms = <0x8c>/reset-gpios = <0x24 0x06 0x01>;\n\t\tpost-power-on-delay-ms = <0x8c>/' /tmp/x88pro.dts

# Disable wireless-bluetooth and wireless-wlan nodes
sed -i '0,/status = "okay"/{/wireless-bluetooth/{n;n;n;n;n;n;n;n;n;s/status = "okay"/status = "disabled"/}}' /tmp/x88pro.dts

# Verify seekwcn_boot node
grep -A 12 'seekwcn_boot {' /tmp/x88pro.dts

cp /boot/dtb/rockchip/rk3528-x88pro.dtb /boot/dtb/rockchip/rk3528-x88pro.dtb.bak
dtc -I dts -O dtb /tmp/x88pro.dts -o /boot/dtb/rockchip/rk3528-x88pro.dtb 2>/dev/null

# 3. Fix module loading
mv /etc/modules-load.d/aic8800-btlpm.conf /etc/modules-load.d/aic8800-btlpm.conf.disabled
echo "blacklist aic8800_bsp" > /etc/modprobe.d/blacklist-aic.conf
echo "blacklist aic8800_btlpm" >> /etc/modprobe.d/blacklist-aic.conf
echo "blacklist aic8800_btlpm_sdio" >> /etc/modprobe.d/blacklist-aic.conf
echo "extraargs=modprobe.blacklist=aic8800_bsp,aic8800_btlpm,aic8800_btlpm_sdio" >> /boot/armbianEnv.txt

# 4. Build skw modules
dkms add -m ea6621q -v 1.0 2>/dev/null || true
dkms build -m ea6621q -v 1.0
dkms install -m ea6621q -v 1.0

# 5. Set module load order
cat > /etc/modules-load.d/skw.conf << 'EOF'
skw_bootcoms
skw_sdio
skw
skwbt
EOF



Right now i cannot try it, if someone else wants to try this...


EDIT: the if in the wifi section of the provisioning doesn't detect correctly, the searched directory doesn't exists so it won't install the module

Edited by 8lall0

Hi,

I have X88 Pro 13 hardware revision 1.7 and tested both Armbian releases v0.6 and v0.7 from the repository. Unfortunately, neither WiFi nor USB 3.0 are working.

Hardware info:

 

Device: X88 Pro 13 (Rev 1.7)

WiFi chip: AIC8800 (device ID 0x6621, SDIO)

Tested images: v0.6 and v0.7

What I tried:

USB 3.0:

DTB already has maximum-speed = "super-speed" configured

USB 3.0 controller exists (Bus 002, 5000M)

But only USB 2.0 PHY available (usb2-phy only, no usb3-phy)

All USB devices connect to Bus 001/003 (480M) instead of Bus 002

USB Ethernet adapter limited to 100 Mbps

Result: USB 3.0 not functional (no PHY in RK3528?)

WiFi (AIC8800):

Firmware present in /lib/firmware/aic8800/

Drivers load: aic8800_bsp_sdio, aic8800_fdrv_sdio

SDIO device detected: mmc2:0001:1, device 0x6621

Error: aicbsp_platform_power_on fails with "fail to set AIC_WIFI power state to 1"

No wlan0 interface appears

Tried manual GPIO reset (GPIO1_6 = pin 38) - no effect

WiFi (EA6621q/SKW drivers):

Applied DTB patches from user 8lall0 (GPIO remapping for seekwcn_boot)

Built ea6621q DKMS drivers successfully

DTB patches verified correct: gpio_chip_en = GPIO1_6

Error: Kernel segmentation fault when loading/unloading SKW modules

SDIO scan timeout: "wait scan card time out"

Current status:

✅ Armbian boots successfully from SD card

✅ Ethernet via USB adapter works (100 Mbps)

❌ WiFi not working (power-on failure)

❌ USB 3.0 not working (no PHY available)

Questions:

Is Rev 1.7 supported? Are there different GPIO configurations needed?

Does RK3528 actually have USB 3.0 PHY or only controller?

Any suggestions for WiFi power issue with AIC8800?

Thanks for any help!

photo_2026-06-20_00-23-08.jpg

photo_2026-06-20_00-23-21.jpg

Update on 0.7:
 

  • Led Display works perfectly
  • Wifi works perfectly after reboot (i would suggest it on screen after the driver is built)
  • Unable to test USB3 at the moment
  • Installed Kodi, unable to get video acceleration (it says llvmpipe with CPU at almost 100%, clearly is running software rendering)

 

@serovan did you reboot after first boot? But yes, probably your revision has different pinout for the peripherals (wifi and PHY)

Edited by 8lall0

NEWS!

I got Mali450 on kodi!

 

I compiled my kodi version with the dockerfile attached.

About the acceleration, quoting Claude:

Quote

 

The Mali-450 GPU was present in the device tree but never initializing because its PWM voltage regulator (vdd-gpu) pointed to a PWM controller with status = "disabled". Fixed with a one-line DT overlay enabling pwm@ffa90000, added to armbianEnv.txt.

Result: GL_RENDERER = Mali450 — full hardware acceleration for both UI and video.

 


EDIT: to make KODI working just set Settings → Player → Videos → Render method → Direct to plane
 

Dockerfile.cross

Edited by 8lall0

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.