New Raspberry Pi 400

I do not know how many are aware but the RPi people released the Raspberry Pi 400. Beginning with today’s new linux-rpi4 linux-rpi4-mainline kernels I am building will push today hopefully it will have support. It has it’s own bcm2711-rpi-400.dtb. The board is built in a keyboard.


I tried this out today using the image for the Pi 4 on the Pi 400, both KDE and XFCE editions. Both had some issues. I’ll spin them up again on the weekend when I have some more time to investigate.

Try the new kernel I just pushed to the unstable branch. They gave it it’s own .dtb. You may have to wait for the mirrors to sync for it to be there.

linux-rpi4-mainline 5.9.3-1

And or:

linux-rpi4 5.4.74-1

Thanks, I just switched to the unstable branch, updated mirrors and did the full system upgrade to pull this down.

I’m not seeing any wireless interfaces listed in ip link.

lspci -k tells me there is a Broadcom 2711 rev 20 available. (Edit: of course there is, it’s the SoC, oops!)

If you are using a DE after logging in did you attach to your wifi using the network icon on the taskbar.

Using KDE; clicking on the network icon in the bottom panel shows only the wired interface unfortunately. Apologies if this is digressing from your original post!

You could have installed just the kernel with pacman.

I do not run plasma, have a pi 400 and I have not upgraded all of my packages in the unstable branch so I have nothing you have at the moment to compare but my wifi does work with xfce with the stable branch with the latest kernel.

Okay, that’s interesting. I just tried a fresh XFCE install with the linux-rpi4 5.4.74-1 kernel but get the same result.

Listing /sys/class/net shows only eth0 and lo available.

My install of xfce was done yesterday with the latest image. I wonder if the wifi firmware has changed wit the pi400.

I can confirm: I have a Pi 400 UK. Just installed Manjaro KDE, updated everything to unstable branch and rebooted. Manjaro sees neither Wifi nor Bluetooth.

I do not have one to test with so I am kinda in the dark. What is the output of:

systemctl --type=service

Getting the same on Sway, tried a fresh install and a nearly-fresh install that’s up to date on the unstable branch.

output of that string for me is

  UNIT                                 LOAD   ACTIVE SUB     DESCRIPTION                                                                  
  bluetooth.service                    loaded active running Bluetooth service                                                            
  brcm43438.service                    loaded active running Broadcom BCM43438 bluetooth HCI                                              
  dbus.service                         loaded active running D-Bus System Message Bus                                                     
  greetd.service                       loaded active running Greeter daemon                                                               
  haveged.service                      loaded active running Entropy Daemon based on the HAVEGE algorithm                                 
  kmod-static-nodes.service            loaded active exited  Create list of static device nodes for the current kernel                    
  lvm2-lvmetad.service                 loaded active running LVM2 metadata daemon                                                         
  lvm2-monitor.service                 loaded active exited  Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
  NetworkManager-wait-online.service   loaded active exited  Network Manager Wait Online                                                  
  NetworkManager.service               loaded active running Network Manager                                                              
  nmb.service                          loaded active running Samba NMB Daemon                                                             
  polkit.service                       loaded active running Authorization Manager                                                        
  rtkit-daemon.service                 loaded active running RealtimeKit Scheduling Policy Service                                        
  smb.service                          loaded active running Samba SMB Daemon                                                             
  sshd.service                         loaded active running OpenSSH Daemon                                                               
  stop-dmesg.service                   loaded active exited  Stop dmesg flooding in tty                                                   
  systemd-binfmt.service               loaded active exited  Set Up Additional Binary Formats                                             
  systemd-homed.service                loaded active running Home Area Manager                                                            
  systemd-journal-flush.service        loaded active exited  Flush Journal to Persistent Storage                                          
  systemd-journald.service             loaded active running Journal Service                                                              
  systemd-logind.service               loaded active running User Login Management                                                        
  systemd-modules-load.service         loaded active exited  Load Kernel Modules                                                          
  systemd-networkd-wait-online.service loaded active exited  Wait for Network to be Configured                                            
  systemd-networkd.service             loaded active running Network Service                                                              
  systemd-random-seed.service          loaded active exited  Load/Save Random Seed                                                        
  systemd-remount-fs.service           loaded active exited  Remount Root and Kernel File Systems                                         
  systemd-sysctl.service               loaded active exited  Apply Kernel Variables                                                       
  systemd-timesyncd.service            loaded active running Network Time Synchronization                                                 
  systemd-tmpfiles-setup-dev.service   loaded active exited  Create Static Device Nodes in /dev                                           
  systemd-tmpfiles-setup.service       loaded active exited  Create Volatile Files and Directories                                        
  systemd-udev-trigger.service         loaded active exited  Coldplug All udev Devices                                                    
  systemd-udevd.service                loaded active running Rule-based Manager for Device Events and Files                               
  systemd-update-utmp.service          loaded active exited  Update UTMP about System Boot/Shutdown                                       
  systemd-user-sessions.service        loaded active exited  Permit User Sessions                                                         
  systemd-userdbd.service              loaded active running User Database Manager                                                        
  tlp.service                          loaded active exited  TLP system startup/shutdown                                                  
  udisks2.service                      loaded active running Disk Manager                                                                 
  upower.service                       loaded active running Daemon for power management                                                  
  user-runtime-dir@1000.service        loaded active exited  User Runtime Directory /run/user/1000                                        
  user@1000.service                    loaded active running User Manager for UID 1000                                                    
  zerotier-one.service                 loaded active running ZeroTier One                                                                 
  zswap-arm.service                    loaded active exited  Zram-based swap (compressed RAM block devices)

The services seem to be loaded. It seems to be missing wpa_supplicant.service for providing key negotiation for WPA wireless networks.

Try installing and configuring crda / wireless-regdm for your country’s regulatory domain as sometimes the default does not work.

Gave that a go, think I’ve done it right as i get this:

iw reg get
country GB: DFS-ETSI
	(2400 - 2483 @ 40), (N/A, 20), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
	(5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
	(5470 - 5725 @ 160), (N/A, 26), (0 ms), DFS
	(5725 - 5875 @ 80), (N/A, 13), (N/A)
	(57000 - 71000 @ 2160), (N/A, 40), (N/A)

Gave it the obligatory 3 reboots to check the first 2 had worked and still not getting anything out of the built-in WiFi.

I don’t know if this is helpful but USB WiFi adapters work fine.

The usb wifi has different modules and firmware.

Until I can get a pi 400 the only other thing I can think of is to try is wicd.

Do you have the file bcm2711-rpi-400.dtb in your boot partition?

yes, I’ve got 4 BCM27…dtb files in my boot partition:


I also have those four files, the difference being bcm2711-rpi-4-b.dtb instead of bcm2711-rpi-4.dtb .

I have Linux manjaro-pi 5.9.6-1-MANJARO-ARM #1 SMP PREEMPT Mon Nov 9 21:57:10 CST 2020 aarch64 GNU/Linux

Only eth0 and lo exist in /sys/class/net .

I spent most of the day yesterday looking into this issue. I found that there were 3 packages installing duplicate firmware and they all seem to be out of date. linux-firmware is now installing the wifi firmware for one example. I have downloaded what that is the latest wifi/bluetooth from the RPi people. Between me and @strit which his pi 400 came in today his wifi and bluetooth seems to be working now.

Try this:

When done you will have no firmware on the system except the
latest firmware from the Rpi people. They will be the exact
files that will be in the Pi OS image.

# Backup in case you want to restore:

Rename /usr/lib/firmware/BCM4345C0.hcd
Backup /usr/lib/firmware/brcm directory
Backup /usr/lib/firmware/updates/brcm directory

Clear out the files in /usr/lib/firmware/brcm directory
Clear out the files in /usr/lib/firmware/updates/brcm directory

# Copy over the new firmware from the tarball below:

Put the new wifi firmware in /usr/lib/firmware/brcm directory
Put the new bluetooth firmware in /usr/lib/firmware/updates/brcm directory

The tarball has 2 folders in it (pi-bluetooth and wifi) with the latest firmware.

When done reboot the pi 400


Yup, 100% success. I am writing this through the WiFi of my Pi 400. No weird services needed, it just works now out of the box.

1 Like