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.

H313 MX10 F1 TV Box - no WiFi/Ethernet/BT

Featured Replies

Hi,

 

I'm trying to get Armbian fully working on an MX10 F1 TV Box (Allwinner H313, 2GB LPDDR3, 16GB eMMC).

 

The box boots using the X96Q LPDDR3 DTB (X96Q TV-Box LPDDR3), but several onboard devices are not working:

❌ Ethernet

❌ Built-in WiFi

❌ Bluetooth

❌ CPU frequency scaling

 

Working:

✅HDMI

✅GPU (Panfrost / OpenGL ES 3.1)

✅USB

✅SD card

✅eMMC

 

I've extracted the original Android DTB and DTS, and I'm attaching them together with the Armbian dmesg.

Could someone familiar with Allwinner Device Trees help identify what is missing or needs to be changed to create proper support for this board?

 

Thanks!

 

image.png.8a2ef46436deb5723bcdcda3312ac92f.pngimage.png.2ab695090e79916f8b1d4216cda00347.png

 

dmesg.txt mx10-f1-android.dtb mx10-f1-android.dts

Hi Norbert,

Found the actual issue. The X96Q LPDDR3 DTB your box is booting (sun50i-h313-x96-q-lpddr3.dts) has WiFi nodes that are roughly right for an AIC8800-style chip, but its Bluetooth node assumes a completely different, discrete chip:

 

Quote

bluetooth {
    compatible = "brcm,bcm43438-bt";
    ...
};


 

That's a Broadcom BT binding on separate R_PIO pins (PL4/PL5/PL6). Since your board has a single AIC8800D40L combo chip doing both WiFi and BT, that node is trying to bring up hardware that doesn't exist on your board — which explains why BT isn't working, and makes me want to double check the WiFi bring-up too rather than assume it's board-accurate.

Using the pin values decoded from your own mx10-f1-android.dts, here's a corrected wifi + BT block:

dts

Quote

 

/ {
    reg_vcc_wifi: reg_vcc_wifi {
        compatible = "regulator-fixed";
        regulator-name = "vcc-wifi";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 = wlan_pwr */
        enable-active-high;
        regulator-always-on;
        status = "okay";
    };

    wifi_pwrseq: wifi_pwrseq {
        compatible = "mmc-pwrseq-simple";
        reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 WL_REG_ON */
        clocks = <&rtc CLK_OSC32K_FANOUT>;
        clock-names = "ext_clock";
        pinctrl-names = "default";
        pinctrl-0 = <&x32clk_fanout_pin>; /* PG10, MUX3 */
    };
};

&mmc1 {
    vmmc-supply = <&reg_vcc_wifi>;      /* chip power, PH5 */
    vqmmc-supply = <&reg_dldo1>;        /* IO rail — not declared anywhere in the android dts for this slot, see note below */
    mmc-pwrseq = <&wifi_pwrseq>;
    bus-width = <4>;
    non-removable;
    status = "okay";

    wlan: wifi@1 {
        reg = <1>;
        interrupt-parent = <&pio>;
        interrupts = <6 15 IRQ_TYPE_EDGE_RISING>; /* PG15 WL_HOSTWAKE */
        interrupt-names = "host-wake";
    };
};

&uart1 {
    pinctrl-names = "default";
    pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
    uart-has-rtscts;
    status = "okay";

    bluetooth {
        compatible = "allwinner,sunxi-btlpm";
        clocks = <&rtc 1>;
        clock-names = "lpo";
        vbat-supply = <&reg_dldo1>;
        vddio-supply = <&reg_dldo1>;
        reset-gpios = <&pio 6 19 GPIO_ACTIVE_LOW>;          /* PG19 bt_rst_n, per your android dts */
        device-wakeup-gpios = <&pio 6 17 GPIO_ACTIVE_HIGH>; /* PG17 bt_wake */
        host-wakeup-gpios = <&pio 6 16 GPIO_ACTIVE_HIGH>;   /* PG16 bt_hostwake */
    };
};

 

 

Two real uncertainties I want to flag rather than gloss over, since both are unverified against your actual hardware:

 

1. **`vqmmc-supply`** — your android dts doesn't declare a vmmc/vqmmc supply for the wifi mmc slot at all (unlike sdc0/sdc2, which do). The vendor driver powers the chip imperatively through the wlan node's own GPIOs instead. So `reg_dldo1` here is a guess, not a confirmed value — if wifi still doesn't enumerate after this change, this is the first thing to revisit.


2. **BT reset pin role conflict** — your android dts has `bt_rst_n` on PG19 (pio 6, pin 19), which is what I used above. But the X98H reference board's dts uses that same pin (pio 6 19) as an `enable-gpios`, and uses a *different* pin (pio 6 13) for `reset-gpios`. The two reference sources disagree on what PG19 actually does. I went with your own android dts since it's specific to your hardware, but this is worth testing carefully rather than trusting either source blindly — if BT probe fails or misbehaves, that pin assignment is the first suspect.

 

Can you try building with this and post `dmesg | grep -iE "aic|mmc1|bluetooth"` after boot?

Edited by Nick A

  • Author

Hello @Nick A

 

Thanks for your reply. I patched the dts. Still only the lo interface is visible. dmesg attached.

dmesg_nick1.log sun50i-h313-x96q-lpddr3_nick1.dts

 

Edit: I attached the android dmesg log... (i'm a bit confused. the board has AIC8800 chip, but the armbian dmsg logging marlin/unisoc wifi drivers)

android_dmesg.log

Edited by Norbert Kett
added android dmesg log.

https://github.com/NickAlilovic/build/blob/v20250306/config/boards/x96q-lpddr3.csc

Remove this

enable_extension "uwe5622-allwinner"

 

 

https://github.com/NickAlilovic/build/blob/v20250306/config/boards/x98h.csc

 

Add this

Quote

function post_family_tweaks__x96q() {
    display_alert "Applying wifi firmware"
    pushd "$SDCARD/lib/firmware"
    ln -s "aic8800/SDIO/aic8800D80" "aic8800_sdio" # use armbian-firmware
    cp -R $SRC/packages/blobs/sunxi/h618/armbian-audio-config $SDCARD/usr/lib/armbian
    cp -R $SRC/packages/blobs/sunxi/h618/armbian-audio-config $SDCARD/lib/armbian
    popd
}

 

 

Edited by Nick A
Might still need the uart1 node

You need to edit x96q-lpddr3.csc.

Since you are using official Armbian build tree you don't need my post_family_tweaks__x96q().

remove 

Quote

enable_extension "uwe5622-allwinner"


add this instead.

Quote

enable_extension "radxa-aic8800"
AIC8800_TYPE="sdio"

 

  • Author

Hello @Nick A

 

Thank you! 😄 Replacing the WiFi extension solved the issue. wlan0 is now created, scans successfully, connects to my AP, and receives both IPv4 and IPv6 addresses. I've attached a fresh dmesg from the working configuration.

Bluetooth doesn't seem to be working yet, but that's not really important for me since I'd like to use this box as a headless server over Ethernet.

Do you have any suggestions for enabling CPU frequency scaling and the onboard Ethernet?

dmesg_nick2.log

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.