modern kernel

slonopotamus edited this page Nov 21, 2011 · 28 revisions

Modern kernel

This page documents an ongoing attempt to run modern linux kernel on N8x0 tablets.

Also, this page assumes you already have bootable Gentoo configured (bootmenu parts can be left off since we're booting to Gentoo partition directly here).

Status

What works:

  • Screen (including X)
  • MMC
  • Wifi
  • Touchscreen and keypad on N800
  • LED on N800

What wasn't tested yet:

  • Bluetooth (should work, already in kernel)
  • Camera (should work, already in kernel)
  • FM (TEA5761) (should work, already in kernel)
  • Touchscreen on N810 (TSC2005) (should work, already in kernel)
  • Keypad & keyboard on N810 (LM8323) (should work, already in kernel)
  • USB (TUSB6010) (should work, already in kernel)
  • LED on N810 (LP5521) (should work, already in kernel)
  • Charging

What doesn't work:

  • Sound on N810 (TLV320AIC33, no driver)
  • GPS on N810 (GPS5300, no driver)
  • Sound on N800 (TSC2301). See this.

Steps

  1. Disable nokia-osso-linux USE and/or switch to $N8X0_OVERLAY/profiles/default/linux/arm/10.0/{n800,n810} profile

  2. Update sys-fs/udev to latest stable version

  3. Install kernel sources from n8x0 overlay (actually, this is a 3.1 + openwrt N8x0 patchset):

     emerge n8x0-sources
    
  4. Use this kernel config to build kernel (tweak CONFIG_CMDLINE and/or FS drivers if required)

  5. Install kernel modules to your N8x0 device

  6. (On device) Copy over /mnt/initfs/usr/lib/hotplug/firmware/{3826.arm,bc4fw.bin} to $GENTOO_ROOT/lib/firmware/

  7. (On device) Remove udev net rules so that wlan0 doesn't get renamed into smth random:

     rm $GENTOO_ROOT/etc/udev/rules.d/70-persistent-net.rules
    
  8. (On device) Add wifi driver modules="p54spi" to /etc/conf.d/modules:

  9. (On device) Disable unneeded init stuff:

     rc-update del nit-boot-basics
     rc-update del osso-dsp-loader
    
  10. (On device) Fix device names in /etc/X11/xorg.conf (touchpad is /dev/input/event1, keypad is /dev/input/event0, pwrbutton is /dev/input/event2)

  11. (On desktop) Download Maemo Flasher and unpack it

  12. Poweroff N8x0 and connect it to desktop via USB

  13. Tell flasher to boot kernel (this won't permanently flash it so reboot will return things to previous state):

    $FLASHER_ROOT/flasher-3.5 -b -l -k $KERNEL_ROOT/arch/arm/boot/zImage
    
  14. Turn on device and watch it booting 3.1 kernel

Observations:

  • Do not compile wifi driver in-kernel (it'll cause boot to hang during wifi firmware lookup)
  • elinux.org has more complete (but a bit outdated already) data
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.