Bring up "BeagleMod CC33" Wi-Fi module on a BeagleY-AI board running 6.12.x kernel

Hi, I’m trying to bring up “BeagleMod CC33” Wi-Fi module on a BeagleY-AI board running “6.12.24-ti-arm64-r42” kernel. Buuut currently, no luck at all, and I’m sort of out of ideas, so any help would be appreciated.

What I’ve currently tried:

  1. Updated dts (attached, based on BeagleBoard-DeviceTrees/v6.12.x-Beagle)
    k3-am67a-beagley-ai.dts (31.1 KB)

  2. lssdio script reports

Host 2 Address 0001 Function 1: ID 0097:4077 (Class 02)
Host 2 Address 0001 Function 2: ID 0097:4077
  1. lspci shows
00:00.0 PCI bridge: Texas Instruments Device b010
  1. lsmod | grep cc33
cc33xx_sdio            20480  0
  1. dmesg | grep -i "probe\|cc33\|wlcore\|sdio\|mmc"
[    0.000000] Kernel command line: console=ttyS2,115200n8 root=/dev/mmcblk1p2 ro rootfstype=ext4 rootwait net.ifnames=0 quiet
[    2.904670] sdhci-am654 fa00000.mmc: Got CD GPIO
[    2.905474] mmc2: CQHCI version 5.10
[    2.905787] mmc1: CQHCI version 5.10
[    2.948260] mmc2: SDHCI controller on fa20000.mmc [fa20000.mmc] using ADMA 64-bit
[    2.948535] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    2.949204] Waiting for root device /dev/mmcblk1p2...
[    2.953963] sdhci-am654 fa20000.mmc: card claims to support voltages below defined range
[    2.967531] mmc2: new high speed SDIO card at address 0001
[    3.007431] mmc1: new ultra high speed SDR104 SDXC card at address 5048
[    3.008756] mmcblk1: mmc1:5048 SD64G 58.0 GiB
[    3.011775]  mmcblk1: p1 p2
[    3.029160] EXT4-fs (mmcblk1p2): mounted filesystem 202a09ac-f488-4cac-80f9-85b4a29bc53c ro with ordered data mode. Quota mode: none.
[    4.488092] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[    4.499272] systemd[1]: Expecting device dev-mmcblk1p1.device - /dev/mmcblk1p1...
[    4.580645] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
[    4.591097] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
[    4.611028] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
[    4.623170] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
[    4.632685] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
[    4.651051] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...
[    4.815041] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    4.816978] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
[    4.822535] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
[    4.824098] systemd[1]: Finished modprobe@dm_mod.service - Load Kernel Module dm_mod.
[    4.827646] systemd[1]: modprobe@drm.service: Deactivated successfully.
[    4.829192] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
[    4.833067] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[    4.834755] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[    4.839970] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[    4.841190] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
[    4.844656] systemd[1]: modprobe@loop.service: Deactivated successfully.
[    4.846727] systemd[1]: Finished modprobe@loop.service - Load Kernel Module loop.
[    5.212873] EXT4-fs (mmcblk1p2): re-mounted 202a09ac-f488-4cac-80f9-85b4a29bc53c r/w. Quota mode: none.
[   26.599909] platform 30220000.dss: deferred probe pending: tidss: port 0 probe failed
[   26.599933] platform sound: deferred probe pending: asoc-simple-card: parse error

The overall feeling is that it is the kernel ignoring the module, or I’m missing something very important in the dts.

Can you verify that you have these modules?

CONFIG_CC33XX=m
CONFIG_CC33XX_SDIO=m
CONFIG_CC33XX_SPI=m
CONFIG_BT_TI=m
CONFIG_BT_TI_UART=m
CONFIG_BT_TI_SDIO=m
CONFIG_CFG80211=m
CONFIG_MAC80211=m

I see that there was only CC33XX_SDIO in your logs.

Sure, here:

  1. grep -i "CC33XX" /boot/config-$(uname -r)
CONFIG_CC33XX=m
CONFIG_CC33XX_SDIO=m
  1. grep -i "BT_TI" /boot/config-$(uname -r)
nothing
  1. grep -i "80211" /boot/config-$(uname -r)
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
# CONFIG_CFG80211_DEFAULT_PS is not set
# CONFIG_CFG80211_DEBUGFS is not set
CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
CONFIG_CFG80211_WEXT_EXPORT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
CONFIG_LIB80211_CRYPT_CCMP=m
CONFIG_LIB80211_CRYPT_TKIP=m
# CONFIG_LIB80211_DEBUG is not set
CONFIG_MAC80211=m
CONFIG_MAC80211_HAS_RC=y
CONFIG_MAC80211_RC_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
CONFIG_MAC80211_MESH=y
CONFIG_MAC80211_LEDS=y
# CONFIG_MAC80211_MESSAGE_TRACING is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_MAC80211_HWSIM is not set

My configuration slightly differs from yours. Do I need an CC33XX_SPI driver (in case SDIO is used)? And whole BT_TI thing if I don’t need a Bluetooth. Thanks for helping btw.

1 Like

You are right. If your setup doesn’t have BLE, you don’t need CONFIG_CC33XX_SPI and BT things.

I haven’t know-how about this issue either. I’ve only recently bring up the chip with 6.1.

The only thing I am sure of is that there is no problem on the hardware side since the device appears in the MMC bus succesfully.

I hope, someone will help you to solve your problem.

1 Like

Can you share your full defconfig?

Regards,

With pleasure!

The kernel was installed from official repo:
sudo apt install bbb.io-kernel-6.12-ti-k3-j722s
So kernel config should be at /boot/config-6.12.24-ti-arm64-r42
config-6.12.24-ti-arm64-r42 (241.9 KB)

1 Like

Thanks testing, different versions…

voodoo@Beagle-GPS:~$ uname -r
6.6.58-ti-arm64-r28
dmesg | grep -i "probe\|cc33\|wlcore\|sdio\|mmc"
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk1p2 ro rootfstype=ext4 rootwait net.ifnames=0
[    2.659743] it66121 4-004c: IT66121 revision 0 probed
[    4.160167] sdhci-am654 fa00000.mmc: Got CD GPIO
[    4.160618] mmc2: CQHCI version 5.10
[    4.165432] mmc1: CQHCI version 5.10
[    4.214439] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    4.215656] mmc2: SDHCI controller on fa20000.mmc [fa20000.mmc] using ADMA 64-bit
[    4.229708] Waiting for root device /dev/mmcblk1p2...
[    4.235001] sdhci-am654 fa20000.mmc: card claims to support voltages below defined range
[    4.255593] mmc2: new high speed SDIO card at address 0001
[    4.272952] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    4.280730] mmcblk1: mmc1:aaaa SD32G 29.7 GiB
[    4.287468]  mmcblk1: p1 p2
[    4.307891] EXT4-fs (mmcblk1p2): mounted filesystem 202a09ac-f488-4cac-80f9-85b4a29bc53c ro with ordered data mode. Quota mode: none.
[    5.734365] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[    5.923924] systemd[1]: Expecting device dev-mmcblk1p1.device - /dev/mmcblk1p1...
[    6.523845] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
[    6.555539] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
[    6.571996] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
[    6.608150] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
[    6.643504] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
[    6.699198] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...
[    7.039282] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    7.048114] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
[    7.512922] EXT4-fs (mmcblk1p2): re-mounted 202a09ac-f488-4cac-80f9-85b4a29bc53c r/w. Quota mode: none.
[   10.562700] cc33xx_sdio mmc2:0001:2: Using GPIO as IRQ
[   11.742973] cc33xx_driver cc33xx.7.auto: Direct firmware load for ti-connectivity/cc33xx-nvs.bin failed with error -2
[   13.850666] memcpy: detected field-spanning write (size 3) of single field "passive" at drivers/net/wireless/ti/cc33xx/scan.c:42 (size 2)
[   13.850794] WARNING: CPU: 1 PID: 497 at drivers/net/wireless/ti/cc33xx/scan.c:42 cc33xx_adjust_channels+0x1a4/0x1e0 [cc33xx]
[   13.850905] Modules linked in: algif_aead cc33xx mac80211 rpmsg_ctrl rpmsg_char libarc4 cfg80211 crct10dif_ce snd_soc_simple_card snd_soc_simple_card_utils cc33xx_sdio cpufreq_dt e5010_jpeg_enc v4l2_jpeg pwm_fan pvrsrvkm(O) pci_endpoint_test rti_wdt at24 snd_soc_davinci_mcasp snd_soc_ti_udma snd_soc_ti_edma snd_soc_hdmi_codec snd_soc_ti_sdma snd_soc_core wave5 snd_pcm_dmaengine snd_pcm videobuf2_dma_contig v4l2_mem2mem ti_k3_r5_remoteproc videobuf2_memops videobuf2_v4l2 videodev snd_timer videobuf2_common snd ti_k3_dsp_remoteproc soundcore mc omap_mailbox optee_rng loop efi_pstore dm_mod
[   13.851072] pc : cc33xx_adjust_channels+0x1a4/0x1e0 [cc33xx]
[   13.851146] lr : cc33xx_adjust_channels+0x1a4/0x1e0 [cc33xx]
[   13.851333]  cc33xx_adjust_channels+0x1a4/0x1e0 [cc33xx]
[   13.851400]  cc33xx_scan_send.isra.0+0xfc/0x2f8 [cc33xx]
[   13.851463]  cc33xx_scan+0x8c/0x118 [cc33xx]
[   13.851527]  cc33xx_op_hw_scan+0xe0/0x120 [cc33xx]
[   13.854386] memcpy: detected field-spanning write (size 3) of single field "active" at drivers/net/wireless/ti/cc33xx/scan.c:43 (size 2)
[   13.854512] WARNING: CPU: 1 PID: 497 at drivers/net/wireless/ti/cc33xx/scan.c:43 cc33xx_adjust_channels+0x1d0/0x1e0 [cc33xx]
[   13.854627] Modules linked in: algif_aead cc33xx mac80211 rpmsg_ctrl rpmsg_char libarc4 cfg80211 crct10dif_ce snd_soc_simple_card snd_soc_simple_card_utils cc33xx_sdio cpufreq_dt e5010_jpeg_enc v4l2_jpeg pwm_fan pvrsrvkm(O) pci_endpoint_test rti_wdt at24 snd_soc_davinci_mcasp snd_soc_ti_udma snd_soc_ti_edma snd_soc_hdmi_codec snd_soc_ti_sdma snd_soc_core wave5 snd_pcm_dmaengine snd_pcm videobuf2_dma_contig v4l2_mem2mem ti_k3_r5_remoteproc videobuf2_memops videobuf2_v4l2 videodev snd_timer videobuf2_common snd ti_k3_dsp_remoteproc soundcore mc omap_mailbox optee_rng loop efi_pstore dm_mod
[   13.854793] pc : cc33xx_adjust_channels+0x1d0/0x1e0 [cc33xx]
[   13.854867] lr : cc33xx_adjust_channels+0x1d0/0x1e0 [cc33xx]
[   13.855051]  cc33xx_adjust_channels+0x1d0/0x1e0 [cc33xx]
[   13.855118]  cc33xx_scan_send.isra.0+0xfc/0x2f8 [cc33xx]
[   13.855181]  cc33xx_scan+0x8c/0x118 [cc33xx]
[   13.855245]  cc33xx_op_hw_scan+0xe0/0x120 [cc33xx]
[   14.569080] cc33xx: HE Disabled
[   14.661257] cc33xx: Association complete.

Now installing 6.12.x

first problem, the wifi node wasn’t enabled in our 6.12.x device-tree…

image

Got it, ti’s v6.12.x dropped some of the compatible’s…

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.82  netmask 255.255.252.0  broadcast 192.168.3.255
        inet6 fd7c:1ab7:c680:e23a:12ca:bfff:fed8:e76  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::12ca:bfff:fed8:e76  prefixlen 64  scopeid 0x20<link>
        ether 10:ca:bf:d8:0e:76  txqueuelen 1000  (Ethernet)
        RX packets 186  bytes 21371 (20.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58  bytes 11816 (11.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Pushed fix: https://gitlab.com/RobertCNelson/ti-linux-kernel-dev/-/commit/fcf131a3dc05251adc22c17c98cc37311c8a3829

Test Kernel in a few minutes: https://gitlab.com/RobertCNelson/ti-linux-kernel-dev/-/jobs/10454088821

you can test via:

wget https://gitlab.com/RobertCNelson/ti-linux-kernel-dev/-/jobs/10454088821/artifacts/raw/deploy/linux-image-6.12.24-ti-arm64-r42.1_1xross_arm64.deb
sudo dpkg -i linux-image-6.12.24-ti-arm64-r42.1_1xross_arm64.deb

tagged as 6.12.24-ti-arm64-r43 coming thru apt…

2 Likes

Yep! Now it works like a charm. Thank you!

1 Like