3

I've updated my rPi to the latest kernel/firmware using rpi-update and my Bluetooth dongle stopped working. I found this to be a known bug in 3.10.* branch of the kernel. Through tinkering and fiddling (I really had spent too much time on this) I was able to restore my rPi to what I think was the state before the update. Although it must not be quite the same since my dongle still is very temperamental. I suspect that I may have firmware and kernel mismatch but I don't know how to check this.

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.6.11+ #557 PREEMPT Wed Oct 2 18:49:09 BST 2013 armv6l GNU/Linux 

pi@raspberrypi ~ $ sudo /opt/vc/bin/vcgencmd version
Oct 18 2013 16:07:43
Copyright (c) 2012 Broadcom
version dbda126981820ea5681263042435388dddf65131 (tainted) (release) 

My question is how do I go from this state to the latest in kernel 3.9.* branch and how do I make sure that the firmware matches that kernel version?

I suppose I could always download and build the kernel, but there must be some civilised apt-get approved way.

It pains me that I am spending so much time on this unfortunate regression bug rather than working on fun stuff. Please help.

The Gruffalo
  • 271
  • 1
  • 3
  • 8
  • See related question: http://raspberrypi.stackexchange.com/questions/19959/how-to-get-a-specific-kernel-version-for-raspberry-pi-linux – Pierz Jul 06 '15 at 20:34

3 Answers3

2

From rpi-update https://github.com/Hexxeh/rpi-update :

To upgrade/downgrade to a specific firmware revision, specify its Git hash (from the https://github.com/Hexxeh/rpi-firmware repository) as follows:

sudo rpi-update fab7796df0cf29f9563b507a59ce5b17d93e0390

mpromonet
  • 1,124
  • 18
  • 37
2

You might be able to find out the firmware commit Git hash using https://repo.xecdesign.com/revisions.html. Just Ctrl-F search your firmware version hash to find out the corresponding rpi-firmware commit which you can then revert to using rpi-update <hash>.

The above website seems to be automatically generated. See https://github.com/raspberrypi/firmware/issues/418

dividuum
  • 376
  • 2
  • 3
1

As others have suggested one way is to use rpi-update with a git hash (e.g. to get kernel-3.18.16 use sudo rpi-update 33a6707cf1c96b8a2b5dac2ac9dead590db9fcaa). But how do you know which hash to use?

Since Github does not provide for searching of commit logs/hashes you need to either go through the commit log manually, or checkout the repo locally and search for it in the logs - as discussed in this question. You can check the log for a specific commit by appending the hash to this URL like so:

https://github.com/Hexxeh/rpi-firmware/commit/33a6707cf1c96b8a2b5dac2ac9dead590db9fcaa

It is also possible to reinstall certain specific kernel versions using apt-get or aptitude. You can search for available versions using:

sudo aptitude search linux-image

And to install one e.g.

sudo aptitude install linux-image-3.18.0-trunk-rpi

Also once you have a number of different kernel versions installed on your card you can switch between them using the kernel parameter in the boot configuration file /boot/config.txt. You may also need to copy/install the relevant kernel files into the /boot partition.

Pierz
  • 844
  • 10
  • 8