37 thoughts on “Android 4.4.4 kernel for Nexus 10

  1. Frank

    Hi tan ce,
    thanks a lot for the kernel! May it is possible to compile the following modules? So a external usb-dvd / usb-cdrom can be used with a nexus 10. 🙂
    crc-itu-t.ko
    cuse.ko
    cdrom.ko
    sg.ko
    sr_mod.ko
    udf.ko
    isofs.ko

    Reply
    1. tan-ce Post author

      Hi Frank. I can’t compile those as modules, because according to my kernel configuration file, those modules are already compiled into the kernel… CD-ROMs should work without needing to load any modules.

      Reply
  2. Frank

    Hi tan ce,

    i’ved tested to insmod your kernel modules manually. But only some of them are working for me – the others can’t be loaded by insmod:
    busybox insmod /sdcard/Download/kernel_modules/3.4.39-gd52af31/*.ko
    insmod: can’t insert ‘/sdcard/Download/kernel_modules/3.4.39-gd52af31/async_memcpy.ko’: unknown symbol in module or invalid parameter
    May there is a bug in the zip-file?

    A connected usb-cdrom can be mount with the terminal (Android Termial Emulator), but only in the terminal the files of the cd/dvd are shown, other apps (e.g. Root Explorer) don’t see any files of the cd.
    Mounted with that command:
    mount -t iso9660 -o ro /dev/block/sr0 /mnt/cdrom
    May you have any suggestions?

    Reply
    1. tan-ce Post author

      I’ll need to check the build for your first question.

      For your second question, you’re running into the SELinux protection issues. One way is to use an app to set SELinux to permissive mode when you want to use a CD-ROM. Do note that you will essentially be disabling some of the protections Android is trying to give you by doing this. If you want to carry on anyway, the app I use is called “SELinux Mode Changer” by Pavel Sikun.

      Reply
  3. Frank

    Same problem with changed SELinux mode. The directory /mnt/cdrom is always empty for other apps than terminal. Changed the system read/write status and the file permissions with “Root Explorer” and the Terminal – still the same. 🙁
    Is there a special trick to mount an device and make is usable for other apps? May Android don’t recognize the iso filesystem?

    Reply
    1. tan-ce Post author

      I’m not sure if this would work, but have you tried using an adb root shell to mount the CD-ROM? Which superuser are you using?

      Reply
      1. Frank

        No, i mount it with an terminal app. Superuserapp is SuperSU v2.01 from Chainfire.
        In a log (with dmesgin terminal) i found that selinux is not configured for labeling.

        May the battery from the Nexus really is loading with usb-cdrom (with external power) and picoplug connected – the battery stand always at 100%…

        There is a copy out of a internal log (dmesg):

        [ 7790.305407] s5p-ehci s5p-ehci: S5P EHCI Host Controller
        [ 7790.306876] s5p-ehci s5p-ehci: new USB bus registered, assigned bus number 1
        [ 7790.307431] s5p-ehci s5p-ehci: irq 103, io mem 0x12110000
        [ 7790.315178] s5p-ehci s5p-ehci: USB 0.0 started, EHCI 1.00
        [ 7790.315790] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
        [ 7790.316300] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
        [ 7790.316801] usb usb1: Product: S5P EHCI Host Controller
        [ 7790.317082] usb usb1: Manufacturer: Linux 3.4.39-gd52af31 ehci_hcd
        [ 7790.317569] usb usb1: SerialNumber: s5p-ehci
        [ 7790.327216] hub 1-0:1.0: USB hub found
        [ 7790.327583] hub 1-0:1.0: 3 ports detected
        [ 7790.330681] exynos-ohci exynos-ohci: EXYNOS OHCI Host Controller
        [ 7790.333283] exynos-ohci exynos-ohci: new USB bus registered, assigned bus number 2
        [ 7790.334157] exynos-ohci exynos-ohci: irq 103, io mem 0x12120000
        [ 7790.389438] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
        [ 7790.390046] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
        [ 7790.390547] usb usb2: Product: EXYNOS OHCI Host Controller
        [ 7790.390826] usb usb2: Manufacturer: Linux 3.4.39-gd52af31 ohci_hcd
        [ 7790.391312] usb usb2: SerialNumber: exynos-ohci
        [ 7790.400518] hub 2-0:1.0: USB hub found
        [ 7790.400876] hub 2-0:1.0: 3 ports detected
        [ 7790.635152] usb 1-1: new high-speed USB device number 2 using s5p-ehci
        [ 7790.770746] usb 1-1: New USB device found, idVendor=05e3, idProduct=0701
        [ 7790.771276] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
        [ 7790.771779] usb 1-1: Product: USB TO IDE
        [ 7790.788460] usb-storage 1-1:1.0: Quirks match for vid 05e3 pid 0701: 520
        [ 7790.789270] scsi0 : usb-storage 1-1:1.0
        [ 7790.831197] battery: charge source type was changed: ac-samsung
        [ 7790.834316] manta_bat_sync_charge_enable: charger changed enable state to 1
        [ 7790.837497] manta_otg manta_otg_work: b_idle -> a_host
        [ 7790.921069] healthd: battery l=100 v=4250 t=25.3 h=2 st=5 c=-251 chg=au
        [ 7790.986023] healthd: battery l=100 v=4250 t=25.3 h=2 st=5 c=-251 chg=au
        [ 7791.049783] healthd: battery l=100 v=4250 t=25.3 h=2 st=5 c=-251 chg=au
        [ 7791.792845] scsi 0:0:0:0: CD-ROM HL-DT-ST RW/DVD GCC-T10N 1.00 PQ: 0 ANSI: 0
        [ 7791.797680] sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
        [ 7791.797937] cdrom: Uniform CD-ROM driver Revision: 3.20
        [ 7791.798843] sr 0:0:0:0: Attached scsi CD-ROM sr0
        [ 7791.799321] sr 0:0:0:0: Attached scsi generic sg0 type 5
        [ 7795.827787] battery: charge source type was changed: ac-samsung
        [ 7795.886763] healthd: battery l=100 v=4260 t=25.3 h=2 st=5 c=58 chg=au
        [ 7832.832262] healthd: battery l=100 v=4280 t=25.3 h=2 st=5 c=230 chg=au
        [ 7860.664869] usb 1-1: USB disconnect, device number 2
        [ 7860.680564] exynos-ohci exynos-ohci: remove, state 1
        [ 7860.680755] usb usb2: USB disconnect, device number 1
        [ 7860.682443] exynos-ohci exynos-ohci: USB bus 2 deregistered
        [ 7860.683092] s5p-ehci s5p-ehci: remove, state 1
        [ 7860.683266] usb usb1: USB disconnect, device number 1
        [ 7860.700105] hub 1-0:1.0: hub_port_status failed (err = -19)
        [ 7860.700277] hub 1-0:1.0: connect-debounce failed, port 1 disabled
        [ 7860.703098] s5p-ehci s5p-ehci: USB bus 1 deregistered
        [ 7860.703721] manta_otg manta_otg_work: a_host -> b_idle
        [ 7860.708840] type=1400 audit(1409988010.195:193): avc: denied { getattr } for pid=24610 comm=”zygote” path=”socket:[3820]” dev=”sockfs” ino=3820 scontext=u:r:untrusted_app:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket
        [ 7860.709468] type=1400 audit(1409988010.195:194): avc: denied { getopt } for pid=24610 comm=”zygote” path=”/dev/socket/zygote” scontext=u:r:untrusted_app:s0 tcontext=u:r:init:s0 tclass=unix_stream_socket
        [ 7860.749025] type=1400 audit(1409988010.235:195): avc: denied { getattr } for pid=24610 comm=”re-initialized>” path=”/data/app” dev=”mmcblk0p9″ ino=627089 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:apk_data_file:s0 tclass=dir
        [ 7861.228489] type=1400 audit(1409988010.715:196): avc: denied { getattr } for pid=24657 comm=”IntentService[S” path=”/dev/block” dev=”tmpfs” ino=4195 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:block_device:s0 tclass=dir
        [ 7861.228891] type=1400 audit(1409988010.715:197): avc: denied { read } for pid=24657 comm=”IntentService[S” name=”block” dev=”tmpfs” ino=4195 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:block_device:s0 tclass=dir
        [ 7861.229213] type=1400 audit(1409988010.715:198): avc: denied { open } for pid=24657 comm=”IntentService[S” name=”block” dev=”tmpfs” ino=4195 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:block_device:s0 tclass=dir
        [ 7861.351936] healthd: battery l=100 v=4280 t=25.3 h=2 st=5 c=237 chg=a
        [ 7861.386831] healthd: battery l=100 v=4280 t=25.3 h=2 st=5 c=237 chg=a
        [ 7861.426031] healthd: battery l=100 v=4270 t=25.3 h=2 st=5 c=237 chg=a
        [ 7863.843441] init: untracked pid 24771 exited
        [ 7863.953094] type=1404 audit(1409988013.440:199): enforcing=0 old_enforcing=1 auid=4294967295 ses=4294967295
        [ 7869.416497] manta_bat_sync_charge_enable: charger changed enable state to 0
        [ 7869.450263] healthd-manta: battery charge enable=0
        [ 7869.450352] healthd: battery l=100 v=4260 t=25.3 h=2 st=3 c=-11 chg=
        [ 7869.488431] healthd: battery l=100 v=4260 t=25.3 h=2 st=3 c=-11 chg=
        [ 7869.521673] healthd: battery l=100 v=4260 t=25.3 h=2 st=3 c=-11 chg=
        [ 7870.069856] battery: charge source type was changed: none
        [ 7870.117734] healthd: battery l=100 v=4201 t=25.5 h=2 st=3 c=-11 chg=
        [ 7871.006304] healthd-manta: battery charge enable=1
        [ 7871.006401] healthd: battery l=100 v=4241 t=25.5 h=2 st=2 c=-459 chg=a
        [ 7871.289808] battery: charge source type was changed: ac-samsung
        [ 7871.331072] healthd: battery l=100 v=4250 t=25.3 h=2 st=2 c=-459 chg=a
        [ 7871.370032] healthd: battery l=100 v=4250 t=25.3 h=2 st=2 c=-459 chg=a
        [ 7878.110404] s5p-ehci s5p-ehci: S5P EHCI Host Controller
        [ 7878.111669] s5p-ehci s5p-ehci: new USB bus registered, assigned bus number 1
        [ 7878.112447] s5p-ehci s5p-ehci: irq 103, io mem 0x12110000
        [ 7878.120154] s5p-ehci s5p-ehci: USB 0.0 started, EHCI 1.00
        [ 7878.120969] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
        [ 7878.121271] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
        [ 7878.121772] usb usb1: Product: S5P EHCI Host Controller
        [ 7878.122053] usb usb1: Manufacturer: Linux 3.4.39-gd52af31 ehci_hcd
        [ 7878.122545] usb usb1: SerialNumber: s5p-ehci
        [ 7878.129528] hub 1-0:1.0: USB hub found
        [ 7878.130213] hub 1-0:1.0: 3 ports detected
        [ 7878.133222] exynos-ohci exynos-ohci: EXYNOS OHCI Host Controller
        [ 7878.135715] exynos-ohci exynos-ohci: new USB bus registered, assigned bus number 2
        [ 7878.136171] exynos-ohci exynos-ohci: irq 103, io mem 0x12120000
        [ 7878.194435] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
        [ 7878.194754] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
        [ 7878.195365] usb usb2: Product: EXYNOS OHCI Host Controller
        [ 7878.195657] usb usb2: Manufacturer: Linux 3.4.39-gd52af31 ohci_hcd
        [ 7878.196145] usb usb2: SerialNumber: exynos-ohci
        [ 7878.204225] hub 2-0:1.0: USB hub found
        [ 7878.204790] hub 2-0:1.0: 3 ports detected
        [ 7878.208433] manta_otg manta_otg_work: b_idle -> a_host
        [ 7878.440257] usb 1-1: new high-speed USB device number 2 using s5p-ehci
        [ 7878.572671] usb 1-1: New USB device found, idVendor=05e3, idProduct=0701
        [ 7878.573210] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
        [ 7878.573502] usb 1-1: Product: USB TO IDE
        [ 7878.582042] usb-storage 1-1:1.0: Quirks match for vid 05e3 pid 0701: 520
        [ 7878.582697] scsi1 : usb-storage 1-1:1.0
        [ 7878.677244] healthd: battery l=100 v=4280 t=25.3 h=2 st=2 c=323 chg=au
        [ 7878.757442] healthd: battery l=100 v=4280 t=25.5 h=2 st=2 c=323 chg=au
        [ 7878.867445] healthd: battery l=100 v=4280 t=25.5 h=2 st=2 c=323 chg=au
        [ 7879.587342] scsi 1:0:0:0: CD-ROM HL-DT-ST RW/DVD GCC-T10N 1.00 PQ: 0 ANSI: 0
        [ 7879.591028] sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
        [ 7879.594142] sr 1:0:0:0: Attached scsi CD-ROM sr0
        [ 7879.595271] sr 1:0:0:0: Attached scsi generic sg0 type 5
        [ 7893.904194] avc: received setenforce notice (enforcing=0)
        [ 7920.471369] type=1400 audit(1409988069.960:200): avc: denied { read } for pid=25078 comm=”su” name=”enforce” dev=”selinuxfs” ino=4 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:selinuxfs:s0 tclass=file
        [ 7920.471538] type=1400 audit(1409988069.960:201): avc: denied { open } for pid=25078 comm=”su” name=”enforce” dev=”selinuxfs” ino=4 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:selinuxfs:s0 tclass=file
        [ 7920.471756] type=1400 audit(1409988069.960:202): avc: denied { getattr } for pid=25078 comm=”su” path=”/sys/fs/selinux/enforce” dev=”selinuxfs” ino=4 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:selinuxfs:s0 tclass=file
        [ 7921.357094] init: untracked pid 25089 exited
        [ 7931.083052] healthd: battery l=100 v=4285 t=25.6 h=2 st=2 c=328 chg=au
        [ 7931.459706] type=1400 audit(1409988080.945:203): avc: denied { read } for pid=25047 comm=”re.rootexplorer” path=2F6465762F6173686D656D2F64616C76696B2D4C696E656172416C6C6F63202864656C6574656429 dev=”tmpfs” ino=4543 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:init_tmpfs:s0 tclass=file
        [ 7938.651014] init: untracked pid 25121 exited
        [ 7938.715833] init: untracked pid 25125 exited
        [ 7938.938687] init: untracked pid 25127 exited
        [ 7955.393252] ISO 9660 Extensions: Microsoft Joliet Level 3
        [ 7955.462077] ISOFS: changing to secondary root
        [ 7955.528794] SELinux: initialized (dev sr0, type iso9660), not configured for labeling
        [ 7991.041419] healthd: battery l=100 v=4289 t=25.6 h=2 st=2 c=277 chg=au
        [ 8051.046858] healthd: battery l=100 v=4289 t=25.8 h=2 st=2 c=291 chg=au

        Reply
        1. tan-ce Post author

          Ok, it’s been a while, but I think I remember something like this back when I was still using SuperSU. (I haven’t been using su for my root shell in a long time now.)

          The general idea is that Android started using Linux namespaces so that one application cannot inadvertently (or maliciously) modify the filesystem in a way that affects another application. One early workaround was to mount whatever you needed from an adb shell, because adb root shell creates mountpoints that are visible by all namespaces by default.

          It is possible to use ADB (over a local TCP connection) to connect to your tablet from your tablet.

          Just did some searching, this might be what you need:
          http://su.chainfire.eu/#how-mount

          Reply
          1. Frank

            tan-ce, you are absolutly right.
            That trick mount the cdrom (dvd-rom) and make it readable for other apps (Root Explorer).
            So i did it with an terminal app:

            su –mount-master
            mount -o remount,rw -t rootfs rootfs /
            mkdir /mnt/cdrom
            mount -t iso9660 -o ro /dev/block/sr0 /mnt/cdrom

            Thanks a lot!!!

            But there is another thing. With a connected usb-dvd-rom (with external power) and a pogo-plug, the battery will be loaded – it stands at 100% up to houres while watching dvd.
            So, the kernel load the battery in host mode with my connected usb dvd-rom. 😉

            Reply
  4. Oleh

    Hi!
    Can you please list changes done to kernel except enabling of modules load.
    Or attach diff-files of sources.
    Thank you!

    Reply
    1. tan-ce Post author

      Hi Oleh. There were no source code changes, I only “mucked around” in the configuration menu (make menuconfig). This zip file contains two text files – one is the .config file I used to compile this kernel, and the other is the default .config generated when you do a “make manta_defconfig”.

      You could do a diff of the two to see what config options were changed. I believe the config file has not changed in the last 3 or 4 versions of android, even though the kernel has changed.

      Hope this helps.

      Reply
        1. tan-ce Post author

          Maybe this will help you, these is a description of the configuration settings that aren’t drivers or filesystem support:

          Line 52: Added default hostname
          Line 86-87: Added saving of .config contents inside the kernel
          Line 178-183: Enabled loadable modules
          Line 588, 590, 592: Enabled additional CPU frequency governors
          Line 684 ~ 711, 744: Additional TCP/IP features
          Line 796, 827, 841, 910-919: Additional netfilter filters
          Line 744, 926, 932-937, 939: Ethernet bridging and VLAN support
          Line 942: Support for esoteric network layer support (eg. Token ring, etc)
          Line 957 ~ 968, 984: Support for network queue disciplines, used for traffic shaping.

          Note that for CPU scaling, the governors are available but are not going to be used unless you tell the kernel to use it, using an app like SetCPU.

          Reply
          1. Oleh

            Thank you for perfect job! Highly appreciate!
            It would be nice to have done the same for Nexus 7 wifi 2nd gen. It is more spread tablet – more people will be grateful. And I have both nexuses 😉
            I guess for that reason a lot of users use custom kernels like ElementalX or franco.Kernel, but I’ve seen a lot of unsuccessful posts on not working modems.

            Reply
            1. tan-ce Post author

              I tried once, but since I don’t actually have a Nexus 7, I was “flying blind”. It should have been a straightforward kernel compile, but I was told it caused boot loops, so I gave up on trying to compile for the Nexus 7.

              Reply
  5. Frank

    Ok, Android 5.0 is out for the Nexus10 (factory image). May there be a version of a (rooted) bootloader with a new kernel? 🙂

    Reply
    1. tan-ce Post author

      Just started updating last night. I’ve a build, but the kernel version changed, so the old config file had to be changed. Perhaps you can try it out and let me know whether I got all the modules you need for the 3G dongle?

      tce-manta-LRX21P.zip

      Meanwhile, I’ll be mucking around with pts-multi and superuser since Lolipop now requires all native binaries to be position independent.

      Reply
    1. tan-ce Post author

      Hi Frank. I no longer have my Nexus 10, but if you’re willing to test the kernel builds, I don’t mind making them over the weekend.

      By the way, how did you get around the selinux issues?

      Reply
  6. Frank

    Hi,

    i found an app to switch between the different selinux modi: Selinuxmodechanger
    So selinux is changed to permissive if it makes any problems… So i also managed to install a linux with the debian-kit additional to android.
    I would test the kernel, if you be so kind to compile it.
    Thanks a lot
    Frank

    Reply
  7. Lina

    Hey michael this is f**king awesome news! Im a huge fan of your work and im deinlatfy gonna buy your album. Is there anywhere i can get the rest of your work?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *