Looking for users with no working WiFi or BT

s905x4 212 meson, with the rtl8821c chipset Bluetooth over u_art exposed as serial not found, DTS was generic shows it should be attached to u_art 1 or a board reference calls for u_art 5 or d with the rockchip version though. Original box does insmod with the driver and restarts broadcoms Bluetooth stack.

Please advise I tried modifying my DTS file to have the correct values without source and while the modifications I initially added didn’t crash they didn’t help so I reverted those.

Unrelated to follow
/*board also has a fd655 that actually drives the vfd and works fine after much testing.

I did get the LEDs on this device to shut off by setting open vfd to use the fd6551 the board dev shunted RGB mode values to through an IR code on the remote.

Willing to bet each bit change may result in some manner of control over those but how would I run a second open vfd service or even just a pwm python script or something.*/

Hello All,

The wifi works, but the bluettoth does not work on my X96 X4 box with coreelec-ne 20.3, but on coreelec-no wifi also does not work.
Here is the link from ne version ssh : https://paste.coreelec.org/fqLXQ3

Thanks fro your help!

Use forum search!

Hello! Mecool KM6 Classic.
Non-working BT and wifi: CoreELEC-Amlogic-ne.aarch64-20.3-Nexus-Generic.img.
Non-working BT: CoreELEC-Amlogic-ng.arm-20.3-Nexus-Generic.img and CoreELEC-Amlogic-no.aarch64-21.0-Omega_nightly_20240209-Generic.img.
https://paste.coreelec.org/Nk6OTD
https://paste.coreelec.org/qHT2uw

This is because the NG driver is included but only 4.9 compatible.
NE is 5.4, no driver exists
NO is 5.15 and RTW88 driver is used.

1 Like

In the future, will I need to use “NO” because “NE” does not support drivers and “NG” is left with Bluetooth not working?

When you mention “the future” the answer is obvious. NO is the future.

1 Like

Hello,

I use a H96 max (s905w2 4g) device. Neither internal bluetooth nor internal wifi are working under corelec installed from CoreELEC-Amlogic-ne.aarch64-20.4-Nexus-Generic.img.gz with s4_s905w2_4g.dtb

I tried CoreELEC-Amlogic-ne.aarch64-21.0-Omega_nightly_20240221-Generic.img.gz and CoreELEC-Amlogic-no.aarch64-21.0-Omega_nightly_20240223-Generic.img.gz and had no wifi or bluetooth.

The results of the commands are:
CoreELEC:~ # uname -a
Linux CoreELEC 5.4.210 #1 SMP PREEMPT Mon Feb 19 10:40:19 CET 2024 aarch64 GNU/Linux
CoreELEC:~ # udevadm info /sys/bus/sdio/devices/* |paste
https://paste.coreelec.org/J7W1Lz
CoreELEC:~ # dmesg | paste
https://paste.coreelec.org/QEJQcD

Wired internet works perfectly. I hope this is helpful.

Best regards

Hi,

I have some info about “H96 max W2” (s905w2 based) devices. They use L8800D-SHCY module, which is based on AIC8800.

The reported SDIO device IDs:

CoreELEC:~ # cat /sys/bus/sdio/devices/mmc2\:524f\:1/uevent 
DRIVER=aicwf_sdio
OF_NAME=wifi
OF_FULLNAME=/soc/sdio@fe088000/wifi@1
OF_COMPATIBLE_0=brcm,bcm4329-fmac
OF_COMPATIBLE_N=1
SDIO_CLASS=07
SDIO_ID=5449:0145
MODALIAS=sdio:c07v5449d0145

Note, that “brcm,bcm4329-fmac” specified on the DT node is also specified in the original android DT. It doesn’t seem to cause problems with loading the proper driver if present.

I managed to get the radio working using the modules from: aic8800/src/SDIO/driver_fw/driver/aic8800 at main · radxa-pkg/aic8800 · GitHub
The firmware also should be used from the same repository. The following files are needed: aic8800/src/SDIO/driver_fw/fw/aic8800 at main · radxa-pkg/aic8800 · GitHub

The package.mk I used for building is:

# SPDX-License-Identifier: GPL-2.0-or-later

# Downloadlocation:
# https://github.com/radxa-pkg/aic8800/

PKG_NAME="aic8800-sdio"
PKG_VERSION="bf2b14e8357f65e6fa84da2905ea5c0756c7791c"
PKG_SHA256="2623b85b977d7792d0bc765d4a47d32028bd328756bca2b3f75536366389be62"
PKG_ARCH="arm aarch64"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/radxa-pkg/aic8800"
PKG_URL="https://github.com/radxa-pkg/aic8800/archive/${PKG_VERSION}.tar.gz"
PKG_LONGDESC="AIC8800 SDIO WiFi and Bluetooth drivers"
PKG_DEPENDS_TARGET="toolchain linux"
PKG_NEED_UNPACK="${LINUX_DEPENDS}"
PKG_TOOLCHAIN="manual"
PKG_IS_KERNEL_PKG="yes"

make_target() {
  cd ${PKG_BUILD}/src/SDIO/driver_fw/driver/aic8800
    KBUILD_NOPEDANTIC=1 kernel_make V=1 CC=${CC} -C $(kernel_path) M=$(pwd)
}

makeinstall_target() {
  mkdir -p ${INSTALL}/$(get_full_module_dir)/${PKG_NAME}
    cp ${PKG_BUILD}/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aic8800_bsp.ko ${INSTALL}/$(get_full_module_dir)/${PKG_NAME}
    cp ${PKG_BUILD}/src/SDIO/driver_fw/driver/aic8800/aic8800_btlpm/aic8800_btlpm.ko ${INSTALL}/$(get_full_module_dir)/${PKG_NAME}
    cp ${PKG_BUILD}/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/aic8800_fdrv.ko ${INSTALL}/$(get_full_module_dir)/${PKG_NAME}
    mkdir -p ${INSTALL}/$(get_full_firmware_dir)/aic8800D80
    cp ${PKG_BUILD}/src/SDIO/driver_fw/fw/aic8800/* ${INSTALL}/$(get_full_firmware_dir)/aic8800D80/
}

The aic8800D80 directory name is not the most fortunate, I just typed it in that way because originally I based on the debian package builder configuration for the module, which used only the firmware for aic8800D80. I suggest changing it both in the package.mk, and the patch below.

1st patch:

diff --git a/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/Makefile b/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/Makefile
index 8701cdc..71685f0 100644
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/Makefile
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/Makefile
@@ -1,7 +1,7 @@
 CONFIG_SDIO_SUPPORT := y
 CONFIG_SDIO_PWRCTRL := y
-CONFIG_AIC_FW_PATH = "/vendor/etc/firmware"
-#CONFIG_AIC_FW_PATH = "/lib/firmware/aic8800"
+#CONFIG_AIC_FW_PATH = "/vendor/etc/firmware"
+CONFIG_AIC_FW_PATH = "/lib/firmware/aic8800D80"
 export CONFIG_AIC_FW_PATH
 ccflags-y += -DCONFIG_AIC_FW_PATH=\"$(CONFIG_AIC_FW_PATH)\"

2nd patch:

diff --git a/src/SDIO/driver_fw/driver/aic8800/Makefile b/src/SDIO/driver_fw/driver/aic8800/Makefile
--- a/src/SDIO/driver_fw/driver/aic8800/Makefile
+++ b/src/SDIO/driver_fw/driver/aic8800/Makefile
@@ -11,57 +11,12 @@ obj-$(CONFIG_AIC_WLAN_SUPPORT) += aic8800_bsp/
 CONFIG_PLATFORM_ROCKCHIP = n
 CONFIG_PLATFORM_ROCKCHIP2 = n
 CONFIG_PLATFORM_ALLWINNER = n
-CONFIG_PLATFORM_AMLOGIC = n
-CONFIG_PLATFORM_UBUNTU = y
+export CONFIG_PLATFORM_AMLOGIC = y
+export CONFIG_PLATFORM_UBUNTU = n
 
 MAKEFLAGS +=-j$(shell nproc)
 
-ifeq ($(CONFIG_PLATFORM_ROCKCHIP), y)
-#KDIR = /home/yaya/E/Rockchip/3229/Android7/RK3229_ANDROID7.1_v1.01_20170914/rk3229_Android7.1_v1.01_xml0914/kernel
-#ARCH = arm
-#CROSS_COMPILE = /home/yaya/E/Rockchip/3229/Android7/RK3229_ANDROID7.1_v1.01_20170914/rk3229_Android7.1_v1.01_xml0914/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
-KDIR  = /home/yaya/E/Rockchip/3229/Android9/rk3229_android9.0_box/kernel
-ARCH = arm
-CROSS_COMPILE = /home/yaya/E/Rockchip/3229/Android9/rk3229_android9.0_box/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
-#KDIR  = /home/yaya/E/Rockchip/3399/rk3399-android-10/kernel
-#ARCH = arm64
-#CROSS_COMPILE = /home/yaya/E/Rockchip/3399/rk3399-android-10/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-ccflags-y += -DANDROID_PLATFORM
-ccflags-y += -DCONFIG_PLATFORM_ROCKCHIP
-endif
-
-ifeq ($(CONFIG_PLATFORM_ROCKCHIP2), y)
-ARCH = arm64
-KDIR = /home/yaya/E/Rockchip/3566/firefly/Android11.0/Firefly-RK356X_Android11.0_git_20210824/RK356X_Android11.0/kernel
-CROSS_COMPILE = /home/yaya/E/Rockchip/3566/firefly/Android11.0/Firefly-RK356X_Android11.0_git_20210824/RK356X_Android11.0/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-ccflags-y += -DANDROID_PLATFORM
-ccflags-y += -DCONFIG_PLATFORM_ROCKCHIP2
-endif
-
-
-ifeq ($(CONFIG_PLATFORM_ALLWINNER), y)
-KDIR  = /home/yaya/E/Allwinner/R818/R818/AndroidQ/lichee/kernel/linux-4.9
-ARCH = arm64
-CROSS_COMPILE = /home/yaya/E/Allwinner/R818/R818/AndroidQ/lichee/out/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
-ccflags-y += -DANDROID_PLATFORM
-endif
-
-ifeq ($(CONFIG_PLATFORM_AMLOGIC), y)
-ccflags-y += -DANDROID_PLATFORM
-ARCH = arm
-CROSS_COMPILE = /home/yaya/D/Workspace/CyberQuantum/JinHaoYue/amls905x3/SDK/20191101-0tt-asop/android9.0/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androidkernel-
-KDIR = /home/yaya/D/Workspace/CyberQuantum/JinHaoYue/amls905x3/SDK/20191101-0tt-asop/android9.0/out/target/product/u202/obj/KERNEL_OBJ/
-
-endif
-
-ifeq ($(CONFIG_PLATFORM_UBUNTU), y)
-KDIR  = /lib/modules/$(shell uname -r)/build
-PWD   = $(shell pwd)
-KVER = $(shell uname -r)
-MODDESTDIR = /lib/modules/$(KVER)/kernel/drivers/net/wireless/aic8800
-ARCH = x86_64
-CROSS_COMPILE =
-endif
+ccflags-y += -DANDROID_PLATFORM
 all: modules
 modules:
        make -C $(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules

3rd patch:

diff --git a/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aicsdio.c b/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aicsdio.c
--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aicsdio.c
+++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_bsp/aicsdio.c
@@ -39,7 +39,7 @@ static int aicbsp_bus_index = -1;
 #include <linux/amlogic/aml_gpio_consumer.h>
 extern void sdio_reinit(void);
 extern void extern_wifi_set_enable(int is_on);
-extern void set_power_control_lock(int lock);
+//extern void set_power_control_lock(int lock);
 #endif//for AML
 
 
@@ -486,7 +486,7 @@ static int aicbsp_platform_power_on(void)
                extern_wifi_set_enable(1);
                mdelay(200);
                sdio_reinit();
-               set_power_control_lock(1);
+               //set_power_control_lock(1);
 #endif
 
 #ifdef CONFIG_PLATFORM_ROCKCHIP2

The Bluetooth part of the chip is connected via UART on fe078000.serial, aka. /dev/ttyS1 (when using s4_s905w2_2g), probably in “H4” HCI mode. The power control, wake and interrupt pins, and also the 32k clock pin in the s4_s905w2_2g device tree seem to match the original device tree.
The kernel Bluetooth HCI part can be bound to the device using:

hciattach -s 1500000 /dev/ttyS1 any 1500000 flow nosleep

And after that and unlocking the rfkill, it works properly (at least with the aic8800 drivers loaded).

3 Likes

That’s very impressive. Thank you for this wealth of information. I will try to replicate your work.

Thank you very much, if I am allowed I will take your information and implement it in CoreELEC repo.

1 Like

That would be great. Thank you.

Just posted, then found this thread, so here’s the device and build info: No Wifi on X96S

Hi - I know it’s been quite a while, but when you say “adding the correct driver,” can you provide details of what you did? I’m unclear on how I can add drivers to a CoreELEC install.

Thx

Hello -

Booted CoreELEC-Amlogic-ng.arm-20.4-Nexus-Generic.img on an X96S with the g12a_s905y2_2g.dtb and I have no wifi networks showing to connect to, nor can I pair a Bluetooth device. I put an ethernet dongle on the device so I could ssh in and grab the devices data pasted below. Spent some time scanning the forum and it seems that others have been able to get this to work so I wonder if there’s an extra step I’m missing? From what I can see here, RTL8723BS support was added some time ago.

Appreciate any pointers.

udevadm info /sys/bus/sdio/devices/* | more
P: /devices/platform/ffe05000.sd2/mmc_host/sdio/sdio:0001/sdio:0001:1
M: sdio:0001:1
R: 1
U: sdio
V: rtl8723bs
E: DEVPATH=/devices/platform/ffe05000.sd2/mmc_host/sdio/sdio:0001/sdio:0001:1
E: SUBSYSTEM=sdio
E: DRIVER=rtl8723bs
E: SDIO_CLASS=07
E: SDIO_ID=024C:B723
E: MODALIAS=sdio:c07v024CdB723
E: USEC_INITIALIZED=9338351
E: ID_SDIO_CLASS_FROM_DATABASE=WLAN interface
E: SYSTEMD_WANTS=rtkbt-firmware-aml.service
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd: