View Single Post
Old 04-20-2014, 07:57 AM   #3
davidfor
Grand Sorcerer
davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.
 
Posts: 24,905
Karma: 47303824
Join Date: Jul 2011
Location: Sydney, Australia
Device: Kobo:Touch,Glo, AuraH2O, GloHD,AuraONE, ClaraHD, Libra H2O; tolinoepos
Quote:
Originally Posted by Lucas Malor View Post
As far as I've understood:
  • if there's a Kobo.tgz in the /mnt/onboard/.kobo/ directory, all the new files are copied to /usr/local/Kobo/
  • If there's a KoboRoot.tgz, all the new files are copied to the root
Yes, but it might be better to say "unpacked to ..." as both of these are compressed files.
Quote:
  • If there's an upgrade directory, the entire internal SD partitions will be overwritten by new partition images
It is more complicated than that. The scripts query the hardware to decide which of the uBoot and uImage files to use. Then they install these files.

The problem I see is that the file names are built up using the amount of RAM, the PCB identifier and the RAM type. Looking at the 3.2.0 Mark4 firmware package, there is a uBoot file for the four different devices. But, there are only two uImage files. One is for the Aura HD. The other is just called "uImage" and Kobo have said it is for the three other devices. The uImage is the kernel.

The scripts build the file names, checks if they exist and if they do, they are installed. But, there is no failback to the non-device specific version. So, with the current code, the kernel is not being installed on the Glo, Mini and N905C Touch.

The reason I noticed this was the multi-touch kernel. I installed that and it worked OK. But, I wanted to remove it and retest the supplied kernel. All I did was to put the 3.2.0 firmware package back on. I was surprised when the multi-touch still worked. So, I looked at what was happening. That was when I read the install code and became suspicious. I put the firmware package back on, copied "uImage" to "uImage-E606B0" and the install happened. I also used telnet to connect and run the scripts manually with extra echo statements to see what happened. This also suggested I was right.

That was the part I was hoping someone would confirm or disprove.

The other part of this is that I had a look at the install scripts that are put onto the device when you do a factory reset. Firstly, the factory reset installs the kernel that is in the recovery partition. Then, the first firmware upgrade uses the install scripts that the factory reset installs. These do basically the same thing, but will use the uImage file if a more specific version isn't found.

What all this means is that after a factory reset and upgrade, the device will always have the kernel that came with that firmware installed. But, a later firmware upgrade will not install the latest kernel for the Glo, Mini and N905C Touch. This probably isn't that important as looking through the last few firmware versions, the uImage file has stayed the same size. There is a pretty good chance that means it hasn't changed. So, if you have done a factory reset recently, you will be OK. But, if you haven't ever done one, you might have the wrong kernel. This would also explain why some people have had trouble with some firmware but after a factory reset and upgrade, it was all OK.

That's what I think is happening. My tests seem to confirm it. But, I'm not confident with shell scripts, so I might have missed something. So, I was hoping someone would confirm or disprove it.
davidfor is offline   Reply With Quote