After software update, no WiFi or WWAN adapter found

I just updated my Librem 5’s PureOS Byzantium using the PureOS Store. Upon rebooting after the update, there is no WiFi or mobile/cellular/WWAN network connectivity. The icons don’t show in the top corner of the screen and the settings for WiFi/Mobile show “No (WiFi|WWAN) Adapter Found”.

lsusb shows a device 2020:2060 Qualcomm, Incorporated Qualcomm CDMA Technologies MSM, which I presume is the modem.

Have tried toggling kill switches on and off.

Phone is behaving almost as if in lockdown mode, as the rotation sensor is not active. No icons for camera or microphone either, though, so not quite the same mode.

I haven’t time to investigate further as I have to go to work.

1 Like

My guess would be that it’s not the software update as such, but just the fact that you rebooted. There are kernel-related bugs that cause some things to not get detected at boot time, sometimes, I think randomly.

So, worth trying to simply reboot again, that might help.

You might think that flipping kill switches would solve that kind of thing, but I think there are cases when a reboot is needed, some things happen (or not) at reboot that donät happen when a kill switch is flipped back and forth.

Possibly related to this open issue:

where it was reported that toggling kill switch does not always solve such problems:

Toggling hks doesn’t always bring it back (when this happens nothing is printed to dmesg when toggling modem hks)… sometimes I have to reboot before the modem shows up again.

I confirm that I have this issue as well after the kernel update.
Switching off and on the kill switches does not help, rebooting does also not help.
I did not test taking out the battery yet, but I doubt if that would solve something.

I created this issue in GitLab.

2 Likes

I have had this issue since receiving my L5 last October. The L5 is used mostly in desktop mode. The cell tower is within line of sight less than 1000ft from my back door. The reset occurs at least once per hour usually more. A reboot is always necessary.

I should have said, I also tried rebooting a couple of times.

However, @janvlug has already pointed to the problem and the solution. The phone had run out of space in /boot, which caused the upgrade to be only partially installed. As suggested in the GitLab issue, running apt autoremove fixed the immediate problem for me, although boot is still 76% full according to df.

2 Likes

It looks like this is more likely to happen if you use full disk encryption:

Here are some related threads:



1 Like

You should have only one kernel in /boot:

purism@pureos:~$ ls -C1 /boot
boot.scr
boot.scr.bak
config-5.16.0-1-librem5
dtb
dtb-5.16.0-1-librem5
dtbs
grub
initrd.img
initrd.img-5.16.0-1-librem5
initrd.img.bak
lost+found
System.map-5.16.0-1-librem5
vmlinuz
vmlinuz-5.16.0-1-librem5
vmlinuz.bak

purism@pureos:~$ df -kh /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p1  451M  248M  180M  59% /boot
1 Like

I don’t know. I tend to like having the previous version around in case of problems with the latest version. A number of times on desktop systems I’ve been in the situation of something not working in the latest kernel and being able to recover from the situation by booting the previous version, which was still installed. I’ll probably clear out the previous kernel once I am confident the latest version is working well.

2 Likes

I’m not a Linux expert. Normally I use FreeBSD on my laptops and with FreeBSD during boot you can easily say, I want to boot the old kernel, the one before. Can you do this with Linux? Can you do this with the L5 not showing any boot loader dialog? If not, keep the old kernel elsewhere, not below /boot. If you run out of space in /boot during the update, you can end up with a not booting device. You are warned :slight_smile:

You can with GRUB. I can’t speak on the L5 though.

That is a very good point. I have not actually figured out how to do this. I am sure it must be possible, but seems it is probably not entirely straightforward. Not having a way to boot the old kernels does make my hoarding of them a bit pointless.

1 Like

If you boot Jumpdrive on the Librem 5 and you then telnet in to the Librem 5 and you really know your way around /boot then it is probably possible to select the kernel to boot manually.

I would try to keep just two kernel versions - the one most recently installed and one known working version.

On desktops / laptops it has saved my bacon a few times - although maybe not so much recently i.e. software is becoming more reliable?

Please describe the required other hardware and steps. Thanks.

A 64-bit x86 computer (running Linux).

Steps for building Jumpdrive: https://source.puri.sm/Librem5/community-wiki/-/wikis/Building-uuu-and-Jumpdrive (written up by me - so you know where to direct any complaints :slight_smile:) Obviously that’s a one-off process.

Steps for booting it: Not sure that it ever got written up. On the Librem 5 side, just the normal magic pressing of buttons process for flashing (i.e. for boot via USB) e.g. https://developer.puri.sm/Librem5/Development_Environment/Phone/Troubleshooting/Reflashing_the_Phone.html#flash-the-image but the script that you run on the x86 computer is not as given there and is instead boot-purism-librem5.sh that will be there in the Jumpdrive area from your build.

1 Like

Thanks. I followed the steps on an Ubuntu 20.04.3 LTS (Focal Fossa) to build uuu. They fail with:

guru@Yoyo:~/L5/librem5-devkit-tools$ ./scripts/build_uuu.sh -i
Cloning into 'mfgtools'...
warning: redirecting to https://source.puri.sm/Librem5/mfgtools.git/
remote: Enumerating objects: 2991, done.
remote: Total 2991 (delta 0), reused 0 (delta 0), pack-reused 2991
Receiving objects: 100% (2991/2991), 3.30 MiB | 266.00 KiB/s, done.
Resolving deltas: 100% (2084/2084), done.
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is unknown
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
CMake Error in CMakeLists.txt:
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.


-- Configuring incomplete, errors occurred!

I guess start with
which c++

Also
grep CMAKE_CXX_COMPILER: ~/git/librem5-devkit-tools/build/mfgtools/CMakeCache.txt

which for me gives
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++

Sorry, I see that you used a slightly different directory structure. Replace ~/git with ~/L5 in the above grep

guru@Yoyo:~/L5$ which c++
guru@Yoyo:~/L5$ grep CMAKE_CXX_COMPILER: ~/L5/librem5-devkit-tools/build/mfgtools/CMakeCache.txt
CMAKE_CXX_COMPILER:FILEPATH=CMAKE_CXX_COMPILER-NOTFOUND

i.e. perhaps I do not have any C++ compiler installed. Please expand your guide which C++ should be installed;

(the grep is relatively pointless because no C++ was found :slight_smile: )

That’s strange because my notes are pretty good and I have no record of installing c++ in order to do that build. Also, another computer that is definitely running Focal (and is not a crash test dummy like the one where I built uuu), it too has c++ installed.

If noone jumps in, let me get back to you as to which package gave me c++

Looks like the needed package is g++