• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[KERNEL][UNOFFICIAL][TB-X605F] kernel for Lenovo Smart Tab M10 (wifi)

Search This thread

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
Code:
#include <std_disclaimer.h>
/*
 *
 * We are not responsible for bricked devices, dead SD cards,
 * thermonuclear war, or you getting fired because the alarm app failed. Please
 * do some research if you have any concerns about features included in this kernel
 * before flashing it! YOU are choosing to make these modifications, and if
 * you point the finger at us for messing up your device, we will laugh at you.
 *
 */

Warnings: this kernel has been tested on the TB-X605F (SDA450) only. It will not work for the:
  • TB-X605F (M10) released with the SDA429 chipset
  • TB-X605L (M10 LTE). This kernel is currently for the wifi variant only.
  • TB-X505F/L (M10 HD) or any of the other M10 variants that use the SDA429 chipset.
  • TB-X605FC (M10 FHD). See the opensource released by Lenovo. Note that the X605FC kernel is 4.9.112.

Introduction
On 4 June 2020, Lenovo released the kernel source for the TB-X605F/L.

Prior to that, this kernel was developed by porting the kernel source for the the P10 (TB-X705F) released by Lenovo in January 2019.

Current version is: 3.18.120 merged with CAFCAF LA.UM.5.5.r1-05300-8x96.0.

The update zip will load some modules. So backup the "System Image", "Vendor Image" and boot partitions with TWRP before loading this kernel.

For kernel developers

Lenovo have released the opensource for the TB-X705F (Smart Tab 10 wifi) dated 31 January 2019 at s000018_20180913_row. This kernel is based on that kernel source (3.18.71). The default config (YM_X605F_defconfig) is almost identical to the kernel config of the M10. Some of the main differences with the P10 source are:
  • removed the MM8013 chipset config. The P10 uses the MM8013 for battery stats etc. There is no MM8013 on the M10.
  • upgraded drivers for the primary autofocus camera.
  • set CONFIG_MODULE_SIG_FORCE to "n" - so kernel will load stock modules from any version. Thanks to @yener90 for the suggestion.

While Lenovo releases the (compiled) stock M10 kernel at 3.18.120, the P10 kernel opensource is 3.18.71. Great job Lenovo!

The source will build signed system modules, if you want them. If you want the wifi driver it's pronto_wlan.ko, compile with CONFIG_PRONTO_WLAN=m.


Features
This kernel compiles and runs. It seems to be stable.

Working:
- wifi
- bluetooth
- power charging (USB and dock)
- camera
- FM radio
- touchscreen (including DT2W)
- audio
- OTG

Known bugs
  • you tell me

Installation
I assume you have unlocked bootloader, TWRP and Magisk. If not, follow these instructions.

The update zip is packaged using AnyKernel3 by @osm0sis .
  1. if you are still on stock ROM & kernel, backup "System Image", "Vendor Image" and boot partitions in TWRP. You only have to do this once, not everytime you load a new version of this kernel.
  2. download update_X605F_kernel.zip and copy it to your sdcard/OTG
  3. boot to TWRP and use "update" to update the zip file
  4. check that the update was successful, then reboot
  5. confirm the kernel is loaded. It should start with "3.18.120-X605F-YM":
    Code:
    X605F:/ $ uname -r
    3.18.120-X605F-YM-xxx
To return to stock kernel, just restore the stock boot, system and vendor backups you made in TWRP. If that doesn't work, then you'll have to reload system ROM using LMSA.

Changelog
Code:
11/03/2020 - 3.18.120-X605F-YM-g02f9b3e-00023-gcef72f9
    - fixed camera - it's now recognised and autofocus works
    - cleared out some dead code that's not needed for M10 (hangover from P10 source)

05/03/2020 - 3.18.120-X605F-YM-g02f9b3e-00018-g818259c3
    - rebased kernel to 3.18.120
    - merge CAF LA.UM.5.5.r1-05300-8x96.0
    - added DT2W
    - fixed "adb reboot".  The rebase fixed it.
    - added a defconfig for LineageOS
    - included signed modules in zip file (including wlan)

20/01/2020 - 3.18.71-X605F-kernel-g0a9bdb1
        - disabled signed module enforcement
        - removed system and vendor modules from update zip
  
17/01/2020 - initial commit

Download

XDA:DevDB Information
M10 kernel, Kernel for the Lenovo Thinkpad Tablet

Contributors
Yahoo Mike
Source Code: https://github.com/Yahoo-Mike/android_kernel_lenovo_X605F
  • branch: msm-3.18.120 is source for this release (default branch)
  • branch: official-3.18.120 is official source released by Lenovo on 4 June 2020.
  • branch: msm-3.18.71 is the initial port from P10 kernel source

Kernel Special Features:

Version Information
Status: Testing

Created 2020-01-16
Last Updated 2020-06-05
 
Last edited:
  • Like
Reactions: Fedroid and osm0sis

yener90

Senior Member
Dec 10, 2018
152
330
Lenovo releases the stock M10 kernel at 3.18.120. However, the P10 kernel source is 3.18.71. This means that system modules and the wifi driver need to be re-compiled, signed and distributed with this kernel. This means that the /system and /vendor partitions need to be touched, not just the boot image.

Just disable the modules, the kernel wont build it anymore. It's also not urgently required.
 
  • Like
Reactions: Yahoo Mike

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
Just disable the modules, the kernel wont build it anymore. It's also not urgently required.
Thanks for the neat suggestion.

I disabled signed module enforcement (CONFIG_MODULE_SIG_FORCE) so we can use stock modules. That means no need to update system or vendor partitions.

I left in *_SIG_ALL in the defconfig, so you can compile and sign modules if you really want to. But I haven't included any modules in the new update zip. If you've used the old version of the update zip, then restore stock boot, system and vendor images before using this new update zip.
 
Last edited:

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
I've released a new version. Main changes are:

  • rebased kernel to 3.18.120
  • merge CAF LA.UM.5.5.r1-05300-8x96.0
  • added DT2W
  • fixed "adb reboot". The rebase fixed it.
  • added a defconfig for LineageOS
  • included signed modules in zip file (including wlan)

I've updated the OP.

I've added a new (default) branch called msm-3.18.120 in the github repo: Yahoo-Mike/android_kernel_lenovo_x605f.

The camera auto-focus is still not working. I haven't looked at it. Lenovo have not released the source code. It looks like the P10 uses different cameras. The main camera is a hynix hi556 variant called: hi556_m10. I'll have a look at this soon. One of the ASUS Zenfone Max Pro (M1) variants uses the hi556. That might have a usable driver. There's also a new video driver for the hi556 (CONFIG_VIDEO_HI556) released by intel for the linux kernel.

If anyone wants me to rebase to 3.18.140, just ask.
 

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
Latest version fixes camera issues. Camera (Hynix hi556) is now recognised and autofocus works.

I copied the Hynix (eeprom OTP) code from the Lenovo Tab4 kernel source. The code in the P10 kernel source never worked - probably because the P10 was never released with Hynix hi556. The P10 uses OmniVision ov8856 (8MP) and GalaxyCore gc5025 (5MP). Whereas the M10 uses Hynix hi556 (5MP) and Superpix sp2519 (2MP).

This kernel is stable. I can't find anything wrong with it. I've tested it using stock ROM with no issues. So I guess it's safe to load up with the stock ROM (Android Pie)...at your own risk. Just be sure to backup the system & vendor images, plus the boot image in TWRP. You'll need these when an OTA comes along, anyway. The updater-script in the OTA will refuse to apply, because it won't recognise this kernel.

So until someone finds some issues with this kernel, I guess it's time to polish up some LineageOS code...
 
Last edited:

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
Two exciting announcements:

prima drivers added to staging
I've added prima drivers to the kernel github repository. It's used by the lineageos_X605F_defconfig to build the wlan.ko module (CONFIG_WLAN_PRONTO).

Lenovo released official kernel source yesterday
The official kernel source for the X605F and X605L has just appeared on Lenovo's support site.

I'll have a closer look over the next few weeks, but here's some preliminary observations:
  1. it is released at msm 3.18.120. This is the stock kernel version. (Lenovo released 3.18.71 for the P10.)
  2. there is only one download for both X605F and X605L. This might be good news.
  3. the autofocus camera drivers for the Hynix appear to be included. I'll take a closer look.
  4. kernel compiles without any changes. I haven't loaded it yet to test it.

edit: I've added the official source to the Yahoo-Mike/android_kernel_lenovo_X605F repo in the official-3.18.120 branch.
 
Last edited:

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
The opensource drop for the X605F from last week includes code for the kernel at msm-3.18.120. Surprisingly, it includes a defconfig for the P10. This confirms that the M10 (X605F/L) and P10 (X705F/L) are very similar.

I'm going to test Lenovo's kernel source on my TB-X605F this weekend. Is there anybody with a TB-X705F/L and the skills to build and test this code on their P10 ? PM me and we can coordinate.

The only differences I can see are:

Code:
m10_msmcortex_defconfig    |   p10_msmcortex_defconfig     |  Kconfig definition
-----------------------    |   -----------------------     |  ------------------
                           |   CONFIG_BATTERY_BQ27x00=y    |  drivers/power
CONFIG_CAMERA_TAB5_M10=y   |                               |  drivers/media/platform/msm/camera_v2
                           |   CONFIG_CAMERA_TAB5_P10=y    |  drivers/media/platform/msm/camera_v2
                           |   CONFIG_FOUR_PA=y            |  sound/soc/codecs & sound/soc/msm
                           |   CONFIG_SENSORS_HALL=y       |  drivers/input
CONFIG_TP_MP_DIFF=y        |                               |  arch/arm64

The TP_MP_DIFF setting is used to load different firmware for the touchscreen drivers: one set for the M10s; another for the P10s.
 

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
Great find! I've successfully built the kernel and was also pleasantly surprised I could use the browsable menuconfig (like the setup for my Linux Desktop) after using the P10 defconfig i.e.
Code:
make -j24 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- O=out p10_msmcortex_defconfig && make -j24 ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- O=out menuconfig

I've disabled requiring signing of loadable kernel modules, as well as generated some modules for USB-to-Serial chipsets I use (pl2303.ko, ftdi, etc.) for projects.

Now to test the Image.gz-dtb: I have not had much luck unpacking boot-TB-X705F_S210120_191029_ROW.img and repacking with my tools. I just end up on a blank screen on the P10.

Do you have a recommended set of tools that have worked with your M10?
Glad to hear it compiled for P10.

I use AnyKernel3 to inject the kernel for me. It can also load kernel modules, if you build any.

I use these properties in the AK3 mod script. Modify it to suit your purposes:
Code:
# begin properties
properties() { '
kernel.string=X605F kernel built by Yahoo Mike @ xda-developers
do.devicecheck=1
do.modules=1
do.cleanup=1
do.cleanuponabort=0
device.name1=X605F
supported.versions=9
supported.patchlevels=- 2020-06
'; } # end properties
Then in my script I copy the kernel to AK3 root directory and modules to ./modules/system/lib/modules directory (or vendor equivalent) & zip it all up.
Code:
# zip it all up, ready for installing in TWRP
# this zip will replace kernel, plus any modules you included (if any)
# don't forget to TWRP-backup boot, system and vendor images
#    also good idea to copy /system/lib/modules/* and /vendor/lib/modules/pronto/*
cd ~/tools/AK3
zip -r9  update_X605F_kernel.zip * -x .git README.md *placeholder 
adb push update_X605F_kernel.zip /external_sd/
Optionally, you can also create a "version" file with something like this (before zipping):
Code:
MY_KERNEL_IMG="$(pwd)/out/arch/arm64/boot/Image.gz-dtb"
MY_KERNEL_VERSION="$(make kernelversion)"
cd ~/tools/AK3

# create a "version" file
MY_ZIP_DATE=$(date +'%Y-%m-%d %H:%M:%S')
MY_BUILD_DATE=$(stat ${MY_KERNEL_IMG} --format=%y | cut -c1-19)
echo "**************************************************" > $MY_ANYKERNEL_DIR/version
echo "unofficial kernel for Lenovo Smart Tab M10 (TB-X605F)" >> $MY_ANYKERNEL_DIR/version
echo " version:  $MY_KERNEL_VERSION"  	>> $MY_ANYKERNEL_DIR/version
echo "compiled:  $MY_BUILD_DATE"  	>> $MY_ANYKERNEL_DIR/version
echo "  zipped:  $MY_ZIP_DATE"  	>> $MY_ANYKERNEL_DIR/version
echo "**************************************************" >> $MY_ANYKERNEL_DIR/version
 

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
The Lenovo opensource seems to be working on the TB-X605F. The modules are also building and installing ok.

There is something odd about the device tree, so make sure you use Image, not Image-dtb.gz. When I used the dtb kernel, I kept getting the dreaded "Qualcomm HS-USB Diagnostics 900E" mode.

I'll add a "lineage-17.1" branch to the github repo. It includes an M10_lineageos_defconfig for building the kernel and modules, and wlan.ko source from CAF for Android 10:
Code:
June 01, 2020   LA.UM.8.6.2.r1-07600-89xx.0   msm8953_64  LA.UM.8.6.2.r1-07600-89xx.0.xml  10.00.00
 

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
There is something odd about the device tree, so make sure you use Image, not Image-dtb.gz. When I used the dtb kernel, I kept getting the dreaded "Qualcomm HS-USB Diagnostics 900E" mode.
I can get the dtb kernel to work by replacing the arch/arm/boot/dts/qcom/ directory from Lenovo's opensource with the same directory from the "msm-3.18.120" branch of the repo. It boots fine with the stock ROM and LOS.

The "msm-3.18.120" branch is based on the original P10 opensource from January 2019.

So yes, there is definitely something screwy about the dt blobs from the June 2020 codedrop.
 
  • Like
Reactions: oguska and drmarble

dustofdeath

Senior Member
Feb 26, 2012
51
0
Not sure if this would be a valid kernel or not - On the back it says model is TB-X605F. I
In settings it says hardware is TB-X606F and so is the software.
It's the m10 gen 2 tablet. I believe Mediatek chipset.
 

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
I added pstore/ramoops support on branch msm-3.18.120. I have no idea why Lenovo never configured pstore/ramoops in the first place.

The ramoops device will dump console-ramoops, dmesg-ramoops-0, pmsg-ramoops-0 into /sys/fs/pstore/.

I'll add pstore support to TWRP for the TB-X605F in the next update. I'll use this branch (msm-3.18.120) to build the kernel.

I'm hoping pstore will tell me why GSI images fail to boot when installed over stock Pie.
 

saizzou38

New member
Oct 25, 2020
1
0
Hamburg
Hello and thanks to all of you to invest so much time and effort. I'm not the best in this android world so forgive me if I ask something stupid :) Recently I got a Lenove Tab M10 TB-X605L and well I rooted it (with magisk) to use Linux on it. As I said I don't use android so much and I just got this product as present so when I saw this post I thought If I can put a new Kernel why not compile it with NetHunter Kernel and give it a try. After some effort (I'm not sure if it will work) I made the kernel. My problem is:
1st I rooted my Tablet with Magisk (as the same way you mentioned in another post) after the rooting I download twrp from google play. Till here all is good. Now:
TWRP is working when I boot it. But asks for a Password. I tried some swipe data, cache etc. but still I see that PASSWORD field. I can't pass it. (And when I pass it without Password I can't see the kernel neither yours nor mine)

I don't care what happens to my Tablet as I said I'm not a android user. I would even would try a crazy Idea even if its end with a dead tablet :D but I would really wanna check if the compiled NetHunter kernel works.
 
Last edited:

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
...TWRP is working when I boot it. But asks for a Password. I tried some swipe data, cache etc. but still I see that PASSWORD field. I can't pass it...
TWRP will ask for a password if you have a password, PIN or pattern set on your tablet, and/or your data partition is encrypted.

If you have a password or PIN set on your tablet, try entering that. If you had a pattern, try this.

You can unencrypt the data partition by reformatting it and then installing Disable_Dm-Verity_ForceEncrypt.zip (created by Zackptg5). Just be aware that this wipes all your data and breaks OTA updates. (Magisk also needs to be uninstalled before OTAs work.)

...And when I pass it without Password I can't see the kernel neither yours nor mine...
Remember: android recovery (twrp) uses the kernel in the recovery partition, not the boot partition.

So, where are you injecting your kernel?

If you are injecting your kernel into TWRP's recovery image, which kernel do you see when you issue this command?
Code:
adb shell uname -r

If you are injecting your kernel into the system ROM's boot.img, then you won't see your kernel in TWRP. You'll see the kernel with which twrp was compiled.

BTW...interesting project. Good luck. Let us know if you get it working.
 

浅香ジュン

New member
Feb 3, 2021
2
1
17
Gensōkyo
Hi there,
  I just compiled your kernel source you've uploaded on the Github (official branch) with m10_msmcortex_defconfig. Then, I flashed it to my device with anykernel 3, also included all modules, but the wifi does not work(It cannot be turned on). Before I flash it, my device was running well at the stock firmware, so I wonder what's wrong with my compilation.
  After that, I also tried to compile the lineage branch, with lineageos_tbx605_defconfig. I flashed it to my device running well on AOSP 10(project treble), but the problem was same as the official source.
  Could you please tell me that what's wrong with my compilation or how to compile it to work well? Thanks a lot :).

Jun ASAKA
2021/02/03 (CST)
 

Yahoo Mike

Senior Member
Apr 3, 2011
310
118
Newcastle
Hi there,
  I just compiled your kernel source you've uploaded on the Github (official branch) with m10_msmcortex_defconfig. Then, I flashed it to my device with anykernel 3, also included all modules, but the wifi does not work(It cannot be turned on). Before I flash it, my device was running well at the stock firmware, so I wonder what's wrong with my compilation.
  After that, I also tried to compile the lineage branch, with lineageos_tbx605_defconfig. I flashed it to my device running well on AOSP 10(project treble), but the problem was same as the official source.
  Could you please tell me that what's wrong with my compilation or how to compile it to work well? Thanks a lot :).

Jun ASAKA
2021/02/03 (CST)
It sounds like the wlan_pronto.ko module is not loading. That's why wifi is not working.

It might be easier to build the msm-3.18.120 branch with YM_x605f_deconfig. That should work.

It does not force module signature checks (CONFIG_MODULE_SIG_FORCE=n). So the stock wlan module (/vendor/lib/modules/pronto/wlan_pronto.ko) should load ok.

If that fails, check the kernel log (dmesg) for errors loading the wlan module. Let me know what the errors are.

official source
The stock wifi module won't work with the kernel from the official branch because CONFIG_MODULE_SIG_FORCE=y. You'll have to download the wlan source from CAF and build it with the same signature. That's a lot of work.

I also had some DT and dm-verity issues with the official source.

lineage-17.1
The lineage-17.1 branch includes the CAF wlan module (in drivers/staging/prima) for Android 10.0. I'm not sure why it's not working for you. Check the kernel log for wlan load errors.

The included CAF wlan module (and your GSI system) are Android 10. Your vendor is Android 9.0 or 8.1. Maybe there's a compatibility issue ? I'm guessing. I haven't tried that kernel with a GSI ROM.
 
  • Like
Reactions: 浅香ジュン

浅香ジュン

New member
Feb 3, 2021
2
1
17
Gensōkyo
It sounds like the wlan_pronto.ko module is not loading. That's why wifi is not working.

It might be easier to build the msm-3.18.120 branch with YM_x605f_deconfig. That should work.

It does not force module signature checks (CONFIG_MODULE_SIG_FORCE=n). So the stock wlan module (/vendor/lib/modules/pronto/wlan_pronto.ko) should load ok.

If that fails, check the kernel log (dmesg) for errors loading the wlan module. Let me know what the errors are.

official source
The stock wifi module won't work with the kernel from the official branch because CONFIG_MODULE_SIG_FORCE=y. You'll have to download the wlan source from CAF and build it with the same signature. That's a lot of work.

I also had some DT and dm-verity issues with the official source.

lineage-17.1
The lineage-17.1 branch includes the CAF wlan module (in drivers/staging/prima) for Android 10.0. I'm not sure why it's not working for you. Check the kernel log for wlan load errors.

The included CAF wlan module (and your GSI system) are Android 10. Your vendor is Android 9.0 or 8.1. Maybe there's a compatibility issue ? I'm guessing. I haven't tried that kernel with a GSI ROM.

It's working! thanks a lot!
 
  • Like
Reactions: Yahoo Mike

Top Liked Posts

  • There are no posts matching your filters.
  • 2
    Code:
    #include <std_disclaimer.h>
    /*
     *
     * We are not responsible for bricked devices, dead SD cards,
     * thermonuclear war, or you getting fired because the alarm app failed. Please
     * do some research if you have any concerns about features included in this kernel
     * before flashing it! YOU are choosing to make these modifications, and if
     * you point the finger at us for messing up your device, we will laugh at you.
     *
     */

    Warnings: this kernel has been tested on the TB-X605F (SDA450) only. It will not work for the:
    • TB-X605F (M10) released with the SDA429 chipset
    • TB-X605L (M10 LTE). This kernel is currently for the wifi variant only.
    • TB-X505F/L (M10 HD) or any of the other M10 variants that use the SDA429 chipset.
    • TB-X605FC (M10 FHD). See the opensource released by Lenovo. Note that the X605FC kernel is 4.9.112.

    Introduction
    On 4 June 2020, Lenovo released the kernel source for the TB-X605F/L.

    Prior to that, this kernel was developed by porting the kernel source for the the P10 (TB-X705F) released by Lenovo in January 2019.

    Current version is: 3.18.120 merged with CAFCAF LA.UM.5.5.r1-05300-8x96.0.

    The update zip will load some modules. So backup the "System Image", "Vendor Image" and boot partitions with TWRP before loading this kernel.

    For kernel developers

    Lenovo have released the opensource for the TB-X705F (Smart Tab 10 wifi) dated 31 January 2019 at s000018_20180913_row. This kernel is based on that kernel source (3.18.71). The default config (YM_X605F_defconfig) is almost identical to the kernel config of the M10. Some of the main differences with the P10 source are:
    • removed the MM8013 chipset config. The P10 uses the MM8013 for battery stats etc. There is no MM8013 on the M10.
    • upgraded drivers for the primary autofocus camera.
    • set CONFIG_MODULE_SIG_FORCE to "n" - so kernel will load stock modules from any version. Thanks to @yener90 for the suggestion.

    While Lenovo releases the (compiled) stock M10 kernel at 3.18.120, the P10 kernel opensource is 3.18.71. Great job Lenovo!

    The source will build signed system modules, if you want them. If you want the wifi driver it's pronto_wlan.ko, compile with CONFIG_PRONTO_WLAN=m.


    Features
    This kernel compiles and runs. It seems to be stable.

    Working:
    - wifi
    - bluetooth
    - power charging (USB and dock)
    - camera
    - FM radio
    - touchscreen (including DT2W)
    - audio
    - OTG

    Known bugs
    • you tell me

    Installation
    I assume you have unlocked bootloader, TWRP and Magisk. If not, follow these instructions.

    The update zip is packaged using AnyKernel3 by @osm0sis .
    1. if you are still on stock ROM & kernel, backup "System Image", "Vendor Image" and boot partitions in TWRP. You only have to do this once, not everytime you load a new version of this kernel.
    2. download update_X605F_kernel.zip and copy it to your sdcard/OTG
    3. boot to TWRP and use "update" to update the zip file
    4. check that the update was successful, then reboot
    5. confirm the kernel is loaded. It should start with "3.18.120-X605F-YM":
      Code:
      X605F:/ $ uname -r
      3.18.120-X605F-YM-xxx
    To return to stock kernel, just restore the stock boot, system and vendor backups you made in TWRP. If that doesn't work, then you'll have to reload system ROM using LMSA.

    Changelog
    Code:
    11/03/2020 - 3.18.120-X605F-YM-g02f9b3e-00023-gcef72f9
        - fixed camera - it's now recognised and autofocus works
        - cleared out some dead code that's not needed for M10 (hangover from P10 source)
    
    05/03/2020 - 3.18.120-X605F-YM-g02f9b3e-00018-g818259c3
        - rebased kernel to 3.18.120
        - merge CAF LA.UM.5.5.r1-05300-8x96.0
        - added DT2W
        - fixed "adb reboot".  The rebase fixed it.
        - added a defconfig for LineageOS
        - included signed modules in zip file (including wlan)
    
    20/01/2020 - 3.18.71-X605F-kernel-g0a9bdb1
            - disabled signed module enforcement
            - removed system and vendor modules from update zip
      
    17/01/2020 - initial commit

    Download

    XDA:DevDB Information
    M10 kernel, Kernel for the Lenovo Thinkpad Tablet

    Contributors
    Yahoo Mike
    Source Code: https://github.com/Yahoo-Mike/android_kernel_lenovo_X605F
    • branch: msm-3.18.120 is source for this release (default branch)
    • branch: official-3.18.120 is official source released by Lenovo on 4 June 2020.
    • branch: msm-3.18.71 is the initial port from P10 kernel source

    Kernel Special Features:

    Version Information
    Status: Testing

    Created 2020-01-16
    Last Updated 2020-06-05
    2
    Two exciting announcements:

    prima drivers added to staging
    I've added prima drivers to the kernel github repository. It's used by the lineageos_X605F_defconfig to build the wlan.ko module (CONFIG_WLAN_PRONTO).

    Lenovo released official kernel source yesterday
    The official kernel source for the X605F and X605L has just appeared on Lenovo's support site.

    I'll have a closer look over the next few weeks, but here's some preliminary observations:
    1. it is released at msm 3.18.120. This is the stock kernel version. (Lenovo released 3.18.71 for the P10.)
    2. there is only one download for both X605F and X605L. This might be good news.
    3. the autofocus camera drivers for the Hynix appear to be included. I'll take a closer look.
    4. kernel compiles without any changes. I haven't loaded it yet to test it.

    edit: I've added the official source to the Yahoo-Mike/android_kernel_lenovo_X605F repo in the official-3.18.120 branch.
    2
    There is something odd about the device tree, so make sure you use Image, not Image-dtb.gz. When I used the dtb kernel, I kept getting the dreaded "Qualcomm HS-USB Diagnostics 900E" mode.
    I can get the dtb kernel to work by replacing the arch/arm/boot/dts/qcom/ directory from Lenovo's opensource with the same directory from the "msm-3.18.120" branch of the repo. It boots fine with the stock ROM and LOS.

    The "msm-3.18.120" branch is based on the original P10 opensource from January 2019.

    So yes, there is definitely something screwy about the dt blobs from the June 2020 codedrop.
    1
    Lenovo releases the stock M10 kernel at 3.18.120. However, the P10 kernel source is 3.18.71. This means that system modules and the wifi driver need to be re-compiled, signed and distributed with this kernel. This means that the /system and /vendor partitions need to be touched, not just the boot image.

    Just disable the modules, the kernel wont build it anymore. It's also not urgently required.
    1
    Hi there,
      I just compiled your kernel source you've uploaded on the Github (official branch) with m10_msmcortex_defconfig. Then, I flashed it to my device with anykernel 3, also included all modules, but the wifi does not work(It cannot be turned on). Before I flash it, my device was running well at the stock firmware, so I wonder what's wrong with my compilation.
      After that, I also tried to compile the lineage branch, with lineageos_tbx605_defconfig. I flashed it to my device running well on AOSP 10(project treble), but the problem was same as the official source.
      Could you please tell me that what's wrong with my compilation or how to compile it to work well? Thanks a lot :).

    Jun ASAKA
    2021/02/03 (CST)
    It sounds like the wlan_pronto.ko module is not loading. That's why wifi is not working.

    It might be easier to build the msm-3.18.120 branch with YM_x605f_deconfig. That should work.

    It does not force module signature checks (CONFIG_MODULE_SIG_FORCE=n). So the stock wlan module (/vendor/lib/modules/pronto/wlan_pronto.ko) should load ok.

    If that fails, check the kernel log (dmesg) for errors loading the wlan module. Let me know what the errors are.

    official source
    The stock wifi module won't work with the kernel from the official branch because CONFIG_MODULE_SIG_FORCE=y. You'll have to download the wlan source from CAF and build it with the same signature. That's a lot of work.

    I also had some DT and dm-verity issues with the official source.

    lineage-17.1
    The lineage-17.1 branch includes the CAF wlan module (in drivers/staging/prima) for Android 10.0. I'm not sure why it's not working for you. Check the kernel log for wlan load errors.

    The included CAF wlan module (and your GSI system) are Android 10. Your vendor is Android 9.0 or 8.1. Maybe there's a compatibility issue ? I'm guessing. I haven't tried that kernel with a GSI ROM.