Lenovo S21e, Linux and the Touchpad

The ‘Ahh’.

I recently bought a Lenovo S21e notebook. I wanted something light, thin and before all: cheap. The usage of a notebook is restricted on doing stuff on the balcony or garden; “stuff” being puppet code, general server management and light web applications. For that the tiny S21e for a mere 180€ at amazon (note: the price actually increased since I bought it) seemed good enough. Sharp display, full size keyboard and no fans or other moving parts. It has no SSD either; the mass  storage is an embedded 64Gb flash card which speed is in between a native spinning hard disk and a SSD. The soldered 2gb ram seemed enough for it’s task and the quad core Celeron; well, it’s a Celeron.

It came with Windows 8 & Bing pre-installed. I always boot into the pre-installed system at least once to test the hardware for defuncts. Later on you can’t tell if it’s a hardware or software problem. A practice that sure helped me…

 

The ‘AAAaahhhhhh!’.

Of course it was not long after I finished checking the hardware that I started to flash Mint on an USB thumb drive for installation (the S21e has no optical drive, either). After disabling UEFI Secure Boot in the Bios (Sorry, efi), it booted up like a charm. Oddly: The touchpad was not working during installation, nor was the wlan. If I did not check the touchpad beforehand in Windows, I would have guessed an hardware malfunction. I thought that after install a quick System Update and surely everything would be peachy.

Nope.

After Reboot the wlan was still off-line and the notebook has no rj45 connector, so I simply tethered my android to get into the wlan. From there I could update the system and install the required wlan driver. Touchpad was still dead. I tried everything without any luck:

  • Posted on Mint Forums,
  • Got in touch with other users [1,2] with the same issue.

The only thing I could figure out so far is, that it’s not Mint/Ubuntu related:

Again: We are talking about a touchpad, not some obscure exotic piece of hardware; sure feels like it, tho.

 

The ‘AAAAAahhhhrgh!’.

I tried other Linux OS’es: Ubuntu, CentOS, Debian.. all the same. The only time it did work was during the install of Ubuntu 14.04 and it stopped working just after the post-update reboot. So the hunt was on, I suspected the synaptics xorg package. On one of those many re-installations of Ubuntu 14.04 I noticed that the synaptics package was unchanged during cd install to installed system; so that’s ruled out. On my final test I installed Ubuntu 14.04 with working touchpad and only updated the kernel — touchpad dead.

In the end it all boiled down to a regression in the hid component in the Linux kernel. Andrew Duggan kindly fixed the issue and supplied three required patches [1]:

Applying those against a 4.1 Kernel file (linux-4.1.6/drivers/hid/hid-rmi.c) and compiling the kernel makes the touchpad work. For your convenience here are the files:

Extract the kernel sources, cp the hid-rmi.c-patched to linux-4.1.6/drivers/hid/hid-rmi.c (overwriting the existing file) and then compile everything with:

fakeroot make-kpkg -j 32 --initrd --append-to-version=-lenovo-s21e --revision `date +%Y%m%d%H%M` --bzimage  kernel_image kernel_headers

You will then have two .deb files, suitable to apt-get installing. If the aspect of compiling your own kernel is not your cup of tea, here are generic kernel images that cover most all hardware and run on 64 bit Linux systems:

Download those and install them with

dpkg -i linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb

Reboot and rejoice!

 

The ‘Wlaaaaaaaaahn’.

During the Upgrade from 3.x kernel to a 4.1.6 there are known issues with the broadcom-sta driver. Your on-board Minty Linux Driver tool won’t work anymore. The reason is that with kernel 3.18’ish the inet_dev api changed (among other things) and with that breaking the Broadcom drivers. Pick between wlan or touchpad.

Heh, kidding.

Fix is easy enough and borrowed from Arch Linux. Get the sources for the BCM43142:

These are pre-patched sources, if you want to patch yourself here is the patchfile [gpg signature] required. Unpack and compile and install with:

make && make install && depmod -a && modprobe wl

This will instantly make your wlan work again without rebooting. In any case you should create the file /etc/modprobe.d/blacklist-wlan.conf with this content:

blacklist b43
blacklist b43legacy
blacklist bcma
blacklist ndiswrapper

If you followed those two steps both your trackpad and your wlan should work. My little s21e is now working perfectly. If you run into a build error:

Running the “make && make install” commands as outlined above only resulted in errors.

The error was “error: macro “__DATE__” might prevent reproducible build”. After some Googling, I found that I could disable the error by adding “-Wno-error=date-time ” to the “CFLAGS” line in the MAKEFILE that came with the wlan driver. After doing that, the script worked and my wifi activated without reboot.

Jim (from comments)

The bad news is that this fix is introduced into the Linux kernel mainline, better known as 4.2 (at the time of writing). Most Distributions are adopting the 3.x line, so it might take a considerable amount of time for this fix to reach your Lenovo through official channels.

Update 2nd November 2015: The required patches are now by default in the 4.3 branch of the kernel; download those sources and compile without using any patches or simply wait for your distribution to provide you with a 4.3 kernel.

-Christian.

 

Christian

Touched base with Linux back in 1995, got hooked up on it ever since. I am using Linux for both private and office for two decades. Working as a System Administrator at a medium sized hosting company I get in touch with all kinds of trouble. All of which can be solved with Linux. In my blog I am sharing solutions to problems that I had to search for myself in hope that someone else out there might find them useful.

68 thoughts to “Lenovo S21e, Linux and the Touchpad”

  1. Christian,
    Andrew Duggan’s fix worked for me too, yay!

    Mind if I ask you a question, “one Lenovo s21e owner to another”? I assume you now have more than one vmlinuz under /boot — your distribution’s, and the 4.1.6 you just built. Now, when your system comes up, do you notice a disturbingly long period in which your screen is blank? And that if you hit Enter, then you start seeing kernel messages on your console? That’s what I have, and I suspect that during the long “blank” period the system is trying to show me a menu of the kernels available. So, do you get that too?

    1. Hey,

      actually no —
      Check “/etc/default/grub” for “GRUB_TIMEOUT” and modify that to your liking, then punch update-grub2.
      It’s normal to switch between splash screen and “real messages” by hitting Escape, but I never had this waiting period.

      In other news: I fixed the wlan with the kernel (for the the ndiswrapper from mint stopped working); I’ll update the post in a few.

      1. Thanks. I figured it out: it’s taking a long time to load the initrd. I can live with that…

        So about wlan, yeah, I don’t have one anymore either, despite activating every B43 driver I could. Please do tell how you fixed that one!

          1. Thanks, saw it.

            Maybe you should add a note for people, like me, who don’t have the patience to compile the kernel on their Lenovo netbook 😉 I.e., in Makefile, edit CROSS_TOOLS and CROSS_KBUILD_DIR, and go “make cross”.

            Oddly enough, after I install this wl.ko and modprobe, I get a device called “eth0”! I fixed that in /etc/udev/rules.d; don’t know if this is a bug in the patched code or somewhere else…

          2. Hey,

            I am doing my compile on a 32 core VMs that has an identical Mint installed– but if someone really is nutty enough to doublecross-compile (different CPU AND different OS) then they should know cross-compile options.

            Some risk included 🙂

  2. hi, i am using ubuntu 15.04 with kernel 3.19, I face the same problem that the touchpad not working.

    any patch to fix the problem? your post is related to kernel 4

    1. You need to upgrade to 4.x, there is currently no backported patch for the 3.x kernel.
      But my provided kernel should work for you; So unless you want that touchpad to work you need to upgrade to 4.x (sorry)

  3. Hi,

    Excellent work with the touchpad. However as you said the wlan doesn’t anymore, and the fix doesn’t want to compile, so do I have to update the kernel from 4.16 to 4.2?

  4. Hey,

    got the touchpad working the the make command failed as such :

    KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make[1]: Entering directory ‘/usr/src/linux-headers-4.1.6-lenovo-s21e’
    CFG80211 API is prefered for this kernel version
    Using CFG80211 API
    make[2]: Warning: File ‘/home/…/lenovo-wlan/src/shared/.linux_osl.o.cmd’ has modification time 3689 s in the future
    CC [M] /home/…/lenovo-wlan/src/wl/sys/wl_linux.o
    /home/…/lenovo-wlan/src/wl/sys/wl_linux.c: In function ‘wl_dump_ver’:
    /home/…/lenovo-wlan/src/wl/sys/wl_linux.c:2051:3: error: macro “__DATE__” might prevent reproducible builds [-Werror=date-time]
    __DATE__, __TIME__, EPI_VERSION_STR);
    ^
    /home/…/lenovo-wlan/src/wl/sys/wl_linux.c:2051:13: error: macro “__TIME__” might prevent reproducible builds [-Werror=date-time]
    __DATE__, __TIME__, EPI_VERSION_STR);
    ^
    cc1: some warnings being treated as errors
    scripts/Makefile.build:258: recipe for target ‘/home/…/lenovo-wlan/src/wl/sys/wl_linux.o’ failed
    make[2]: *** [/home/…/lenovo-wlan/src/wl/sys/wl_linux.o] Error 1
    Makefile:1384: recipe for target ‘_module_/home/…/lenovo-wlan’ failed
    make[1]: *** [_module_/home/…/lenovo-wlan] Error 2
    make[1]: Leaving directory ‘/usr/src/linux-headers-4.1.6-lenovo-s21e’
    Makefile:140: recipe for target ‘all’ failed
    make: *** [all] Error 2

    Could it be due to the fact that the kernel is on 4.16 and not 4.2?

    1. Hey,

      are you compiling this on your Lenovo or “somewhere else”? What Linux flavor are you running there?
      I checked the wlan compile against my 4.1’er kernel and it compiles fine under 4.1x on it.

      1. Hey,

        I’m on Xubuntu 15.04 with the lenovo and compiling with it. What do you mean by “somewhere else”??

        1. I mean you’re not compiling the kernel on a different (faster) pc/vm/whatnot. I am not entirely sure about xubuntu, never used it. The error “CFG80211 API is prefered for this kernel version” might be useful in hunting that issue down in your distros respective forum.
          Sorry.

  5. Christian,
    Thank you for the awesome work.I got my trackpad back which is amazing. Thank you. However, I am running into a problem with the wlan driver.

    I kept getting permission errors:

    make && make install && depmod -a && modprobe w1
    KBUILD_NOPEDANTIC=1 make -C /lib/modules/`uname -r`/build M=`pwd`
    make[1]: Entering directory `/usr/src/linux-headers-4.1.6-lenovo-s21e’
    CFG80211 API is prefered for this kernel version
    Using CFG80211 API
    Building modules, stage 2.
    CFG80211 API is prefered for this kernel version
    Using CFG80211 API
    MODPOST 1 modules
    WARNING: modpost: missing MODULE_LICENSE() in /home/ubuntu/Downloads/lenovo-wlan/wl.o
    see include/linux/module.h for more information
    make[1]: Leaving directory `/usr/src/linux-headers-4.1.6-lenovo-s21e’
    install -D -m 755 wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.dep.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.dep.bin.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.alias.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.alias.bin.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.softdep.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.symbols.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.symbols.bin.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.builtin.bin.tmp, 1101, 644): Permission denied
    depmod: ERROR: openat(/lib/modules/4.1.6-lenovo-s21e, modules.devname.tmp, 1101, 644): Permission denied
    modprobe: FATAL: Module w1 not found.

    Any tips or advice would be appreciated. Would love to use the built in wifi!

  6. hi,

    awesome tutorial. I did get the wifi and touchpad working, but it looks like the system is still unstable. For example my wifi connection drops periodically. Also the system does not come back after suspend. Anyone having the same issues?

    1. That’s an issue with the notebook itself. The wireless antenna is a joke. If you were to use a USB wlan adapter everything would resolve itself. Even worse: USB Harddisk attached to, well, your usb port drop periodically with insane disk io errors. This has been reported by many, many users on the net.

      So be lucky that you get it to work sometimes; better than not at all.

      Hey, it’s a 200 bucks notebook; don’t expect too much.

      1. After fiddeling around with the unstable WiFi connection i decided to give Linux Mint 18 a try, and the WiFi worked for hours w/o any interruption, but unfortunately the touchpad didn’t worked at all. That’s IMHO a show stopper :-/

  7. Hey Christian,
    How are you liking your touchpad now? Mine’s kinda squirrely; I find myself “clicking” links without wanting to, I can’t cut and paste (i.e. activate the “middle button”) with any consistency, and if when my palm touches the touchpad by accident all hell sometimes breaks loose.

    Are you having any better an experience than that? If so, I’d love to see what you have under /etc/X11/xorg.conf.d. I’ve tarred up what I have and placed it, should you care to look at it, at http://strnbrg59.com/xorg.conf.d.tar.

    A few highlights from what you’ll find there:

    Section “InputClass”
    Identifier “touchpad catchall”
    Driver “synaptics”
    MatchIsTouchpad “on”

    Section “InputClass”
    Identifier “Default clickpad buttons”
    MatchDriver “synaptics”
    Option “EmulateMidButtonTime” “100”
    Option “SoftButtonAreas” “60% 0 82% 0 40% 59% 82% 0”

    Section “InputClass”
    Identifier “Lenovo s21e stuff by me”
    Driver “synaptics”
    MatchIsTouchpad “on”
    Option “CoastingSpeed” “0”
    Option “VertEdgeScroll” “off”
    Option “VertTwoFingerScroll” “off”
    Option “HorizEdgeScroll” “off”
    Option “HorizTwoFingerScroll” “off”
    Option “CircularScrolling” “off”
    Option “FingerLow” “55”
    Option “FingerHigh” “75”
    Option “PalmDetect” “1”
    Option “PalmMinWidth” “1”
    EndSection

    1. Hey there,

      I am using Mint 17.2 which has some nice Touchpad settings via gui. If you enable the right stuff there it actually get real good. So far I am using the Touchpad only, so its ‘really’ cable-free.

      Try Settings -> Hardware -> Mouse and Touchpad -> Touchpad.

      Fiddle with those settings to your liking; it will become really good 🙂

  8. Dear Christian

    Thank you for all the help getting my touchpad back to work.

    Im stuck however on the wlan section.

    I’ve downloaded both the lenovo-wlan.tar.bz2 and the patchfile, but i cant seem to run that command.
    When i run the ‘make && make install && depmod -a && modprobe wl’, i get the following error:

    KBUILD_NOPEDANTIC=1 make -C /lib/modules/’uname -r’ /build M=’pwd’
    make: *** /lib/modules/4.1.6-lenovo-s21e/build: no such file or directory. Stop.
    make: *** [all] Error 2

    I’m a big noobie at linux or mint so i have no clue what i have to do. What i can say is that lib/modules/4.1.6-lenovo-s21e has no build folder, but the lib/modules/3.16.0-38-generic has one.

    Do you know how to solve this?

    Kind regards
    Thomas

    1. Hey. Sorry for late comment, but I was able to get this working on my Ubuntu 14.02. I had the same issue as you, and same specs as well. I’m not sure how I got mine to start working, but i somehow got it start recognizing my wifi :). Dont know how though… here are a few lines of code that I randomly wrote on my terminal:
      patch < linux-recent.patch
      make wl
      I also made the whole lib/modules/ file completely writable by making it chmod 777 (i know its a bit too much but I really wanted to get this fix!)

      Sorry if i couldnt have helped that much, I'm a linux n00b and im trying to understand this system very well. I use a mac but i dont have as much privileges as i want out of my mac bc its unix based, so trying new stuff with linux 🙂

      Also Christian, Thanks so much for this very helpful article, I am forever grateful for this ^_^

  9. Strange error message here, trying to install the downloaded kernel files on my s21e, any thoughts? Running dpkg as above, as root. Using the latest Ubuntu:

    (Reading database … 271271 files and directories currently installed.)
    Preparing to unpack linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb …
    Unpacking linux-headers-4.1.6-lenovo-s21e (201508261725) …
    dpkg-deb (subprocess): cannot copy archive member from ‘linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb’ to decompressor pipe: unexpected end of file or stream
    dpkg-deb (subprocess): decompressing archive member: lzma error: unexpected end of input
    dpkg-deb: error: subprocess returned error exit status 2
    dpkg: error processing archive linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb (–install):
    cannot copy extracted data for ‘./usr/src/linux-headers-4.1.6-lenovo-s21e/Module.symvers’ to ‘/usr/src/linux-headers-4.1.6-lenovo-s21e/Module.symvers.dpkg-new’: unexpected end of file or stream
    Preparing to unpack linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb …
    Examining /etc/kernel/preinst.d/
    run-parts: executing /etc/kernel/preinst.d/intel-microcode 4.1.6-lenovo-s21e /boot/bzImage-4.1.6-lenovo-s21e
    Done.
    Unpacking linux-image-4.1.6-lenovo-s21e (201508261725) …
    dpkg-deb (subprocess): cannot copy archive member from ‘linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb’ to decompressor pipe: unexpected end of file or stream
    dpkg-deb (subprocess): decompressing archive member: lzma error: unexpected end of input
    dpkg-deb: error: subprocess returned error exit status 2
    dpkg: error processing archive linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb (–install):
    cannot copy extracted data for ‘./lib/modules/4.1.6-lenovo-s21e/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko’ to ‘/lib/modules/4.1.6-lenovo-s21e/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko.dpkg-new’: unexpected end of file or stream
    Examining /etc/kernel/postrm.d .
    run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.1.6-lenovo-s21e /boot/vmlinuz-4.1.6-lenovo-s21e
    run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.1.6-lenovo-s21e /boot/vmlinuz-4.1.6-lenovo-s21e
    Errors were encountered while processing:
    linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb
    linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb

      1. I downloaded the sources again and that did the trick! Then, I ran into another challenge that I was able to resolve myself (telling the story here in case someone Googles it). After getting the trackpad sources working, I downloaded the patchfile and wlan driver. Running the “make && make install” commands as outlined above only resulted in errors.

        The error was “error: macro “__DATE__” might prevent reproducible build”. After some Googling, I found that I could disable the error by adding “-Wno-error=date-time ” to the “CFLAGS” line in the MAKEFILE that came with the wlan driver. After doing that, the script worked and my wifi activated without reboot.

        Here’s where I found the info: http://askubuntu.com/questions/593566/how-to-disable-werror-date-time-macro-date-might-prevent-reproducible-bui

        Thanks for doing the legwork on this, it’s a great value laptop and I’m thrilled to use it as a backup! And thanks for replying and helping out!

  10. Apparently, Ubuntu 15.10 will be shipped with kernel 4.2 and the “final beta” should be released in a matter of hours. It would be great if you could test this edition and include the outcome in the post!

      1. I just installed the 15.10 beta2 from Sept 24th and the touchpad is still not working. I compiled the patch into the 4.2.1 kernel and got it working. (Thank you!!!)
        However, now wlan is not functioning. I compiled and installed the module but when I try modprobe wl I get the following in dmesg:
        wl: unknown symbol flush_workqueue (err 0)

    1. You would have to compile the kernel on your own; a solution that’s still valid. The only thing that does not apply to you is the .deb-Install “Shortcut”.
      If you are unable to compile your own kernel, well, change of distro then 🙂 Or check your distro’s wiki in regards to compiling kernels.

  11. Hello! Thanks for the ever-so helpful post! I’ll try and get my touchpad to work 🙂

    With regards to the onboard wlan, I’ve found that one doesn’t need to patch anything. I just installed the default “wl” drivers for the BCM43142 -> wiki.debian.org/wl

    Worked just fine on Kali Linux.

  12. Thank you Christian. In about 2 hours your Lenovo S21e fixes made my machine usable.
    I am going to restate and expand the steps of the fixes.

    First I bought a USB 3.0 Hub with gigabit Ethernet. I plug straight into an old Linksys switch device. File downloads immediately became fast and reliable. I also still need a USB mouse while I figure out the touchpad.

    Next, my Lenovo S21E runs Ubuntu 14.04. Christian has done the work of compiling a new kernel with touch pad fixes.

    What you will do is download the kernel and header files and install them. We are doing a classic Linux fix and benefitting from Christian who recompiled the kernel for us.

    You will need to open a terminal, and use a mouse to copy commands from Christian’s blog and paste them onto the terminal command line. You will use ls -l to list files, wget to fetch files and sometimes you must precede commands with sudo for extra authority. When you need to repeat commands, press up-arrow it recalls commands from the history.

    My Firefox browser did not download the full kernel file. Since Firefox downloads to the Downloads directory, I used Downloads for my work area. ” cd Downloads” in the terminal.

    Here is the wget command for getting files:
    # In Downloads already
    wget misc.alpha-labs.net/lenovo/linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb
    wget https://misc.alpha-labs.net/lenovo/linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb
    ls -l # See file sizes with ls -l

    Here are the whole bunch of files:
    lmckusic@vona:~/Downloads$ ls -l
    total 64900
    drwxr-xr-x 5 lmckusic lmckusic 4096 Oct 31 21:41 lenovo-wlan
    -rw-rw-r– 1 lmckusic lmckusic 7956480 Oct 31 21:15 lenovo-wlan.tar
    -rw-rw-r– 1 lmckusic lmckusic 836 Oct 31 21:15 lenovo-wlan.tar.bz2.asc
    -rw-rw-r– 1 lmckusic lmckusic 7290994 Aug 26 09:54 linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb
    -rw-rw-r– 1 lmckusic lmckusic 819 Oct 31 20:46 linux-headers-4.1.6-lenovo-s21e_201508261725_amd64.deb.asc
    -rw-rw-r– 1 lmckusic lmckusic 51181364 Aug 26 09:55 linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb
    -rw-rw-r– 1 lmckusic lmckusic 819 Oct 31 20:46 linux-image-4.1.6-lenovo-s21e_201508261725_amd64.deb.asc

    With your linux-image and linux-header files, you are ready to run the dpkg command in Christian’s first entry. I precede the comand with sudo dpkg -i … because this is a root administration command.

    Once dpkg works you can see the newly installed files in /boot
    lmckusic@vona:~$ ls -1 /boot
    abi-3.16.0-30-generic
    config-3.16.0-30-generic
    config-4.1.6-lenovo-s21e
    config-4.1.6-lenovo-s21e.old
    grub
    initrd.img-3.16.0-30-generic
    initrd.img-4.1.6-lenovo-s21e
    memtest86+.bin
    memtest86+.elf
    memtest86+_multiboot.bin
    System.map-3.16.0-30-generic
    System.map-4.1.6-lenovo-s21e
    vmlinuz-3.16.0-30-generic
    vmlinuz-3.16.0-30-generic.efi.signed
    vmlinuz-4.1.6-lenovo-s21e

    Moving on to the wireless driver fix. Your starting file is a bz2 file.
    The command line steps to un-zip and un-tar are as follows

    bunzip2 lenovo-wlan.tar.bz2
    ls # see file without bz2 extension
    tar -xf lenovo-wlan.tar
    663 ls # tar archive gone. See a subdirectory
    664 cd lenovo-wlan/ # Go into the sub directory
    665 ls # Ready to do the fix

    Christian’s unpack, compile and install needs three sudo instructions for my way of doing things
    make && sudo make install && sudo depmod -a && sudo modprobe wl

    Finally, the blacklist requires the use of sudo also because everything in /etc must be kept secure
    sudo vi /etc/modprobe.d/blacklist-wlan.conf # Any editor is OK. Copy and paste from Christian’s text.

    Thanks again to Christian.

    1. Hey Leem,

      thanks for your feedback! Seems I am too ‘old school’; When doing massive changes like all the steps above I go ‘sudo su -‘ to obtain a full root shell, no sudo prefixing required. 🙂

  13. Hi guys. I have same unit. Installed 15.10 kern 4.2.. to no sign of track pad or wlan fix.. has anyone tried the 4.3kernel new release , install and test yet ? Best link to download the 4.3 ?

    Anyone recommend a USB 2.0 external wlan card for the above configuration ? That’s best of breed for aircrack suit usage ? Ie best chipset available that’s supported by ubuntu for 15.10 4.3

  14. Hi, my name is Jun.
    Thank you for writeing article.
    when I tried to install Ubuntu 15.10 , wifi have been completely work since software update.
    However, touch pad not worked 🙁
    How to install 4.3 kernel with Ubuntu 15.10?
    Please tell me those commands.

    1. I am using Lubuntu 15.10
      I got the headers and image kernel deb file from here: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.3-unstable/ (generic not lowlatency, and both end with amd64.deb), then i installed with (while in the dir where the files were downloaded)
      sudo dpkg -i linux-headers-4.3*.deb linux-image-4.3*.deb
      i then restarted with sudo reboot and after boot my touchpad worked fine 🙂

      heres some output of my install
      $ inxi -Fxz
      System: Host: sr-laptop Kernel: 4.3.0-040300-generic x86_64 (64 bit gcc: 5.2.1) Desktop: LXDE (Openbox 3.6.1)
      Distro: Ubuntu 15.10 wily
      Machine: System: LENOVO product: 80M4 v: Lenovo S21e-20
      Mobo: LENOVO model: Lenovo S21e-20 v: SDK0J33995 WIN Bios: LENOVO v: C4CN15WW(V1.05) date: 07/21/2015
      CPU: Dual core Intel Celeron N2840 (-MCP-) cache: 1024 KB
      flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 8652
      clock speeds: max: 2582 MHz 1: 1294 MHz 2: 1532 MHz
      Graphics: Card: Intel Atom Processor Z36xxx/Z37xxx Series Graphics & Display bus-ID: 00:02.0
      Display Server: X.Org 1.17.2 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366×768@59.97hz
      GLX Renderer: Mesa DRI Intel Bay Trail GLX Version: 3.0 Mesa 11.0.2 Direct Rendering: Yes
      Audio: Card Intel Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller
      driver: snd_hda_intel bus-ID: 00:1b.0
      Sound: Advanced Linux Sound Architecture v: k4.3.0-040300-generic
      Network: Card: Broadcom BCM43142 802.11b/g/n driver: wl bus-ID: 01:00.0
      IF: wlp1s0 state: up mac:
      Partition: ID-1: / size: 27G used: 4.3G (18%) fs: ext4 dev: /dev/mmcblk0p2
      ID-2: swap-1 size: 2.02GB used: 0.00GB (0%) fs: swap dev: /dev/mmcblk0p3
      RAID: No RAID devices: /proc/mdstat, md_mod kernel module present
      Sensors: System Temperatures: cpu: 43.0C mobo: N/A
      Fan Speeds (in rpm): cpu: N/A
      Info: Processes: 153 Uptime: 32 min Memory: 575.7/1882.3MB Init: systemd runlevel: 5 Gcc sys: 5.2.1
      Client: Shell (bash 4.3.421) inxi: 2.2.16

      1. Hey,

        yeah, the 4.3 line has the fixes in place already. I did the patch to backport it to 4.1 (as at that time there was no such thing).
        I am soo glad that the drivers are now available without any patches.

        1. same here. although I did very much appreciate your work to get this going, I was using your patched kernel files until you wrote the update in your post that the patches are now in 4.3 😀

          Oh, but even with the touchpad working on the 4.3 kernel the wifi did not work until i did an apt-get update ,and installed the bcmwl-kernel-source package 😐

    2. almost forgot DONT forget to download and install the linux-headers-4.3*all.deb file as well (it’s the only file with all.deb at the end)

  15. Just installed 4.3 on 15.10 and reboot… trackpad works nice ! But still no broadcom mick mouse wlan.. so ill try the christian fix ontop of 4.3

    Anyone know how to turn off broadcom internal wifi and make live the rtl drivers for the legendary Alpha Awus036h ?

  16. Hi,

    Will this work for a T450s as well? Linux mint 17.2, awaiting a 4.3 kernel.

    My touchpad seems to be detected as a mouse, and I cant use any of the KDE functions for it, get synaptics driver missing or not used.

    I had tried newer kernels on it, but lost Wifi while not correcting the touchpad either. Currently on 3.16.0-53 which still gives me both.

  17. Thanks for the info. Trackpad now working well under Linux 4.3.0.

    For wireless now.. After adding the following to the makefile (now line 127):

    EXTRA_CFLAGS += -Who-error=date-time

    I have only one error left:

    WARNING: modpost: missing MODULE_LICENSE() in home/daniel/lenovo-wlan/wl.o
    see include/linux/module.h for more information

    Have I edited the make file incorrectly?

  18. Just a quick update to tell you I tried the new Ubuntu 16.04 Xenial Xerus Alpha 1, and it works great with respect to the touchpad and wireless.
    So the good news is that by the end of April there will be a stable distribution that works in our Lenovo S21e.
    Here is the schedule for Ubuntu Xenial:
    https://wiki.ubuntu.com/XenialXerus/ReleaseSchedule

    Afterwards there will be a Mint distribution based on Ubuntu 16.04, so most probably that will work too.

    1. Just installed 16.04 Beta 2 and no-go… doesn’t work again. What gives? Kernel 4.4.0-15-generic, so it *should* work…

  19. IDK what God help me but I’ve got touchpad and wireless working but ther’s not multi touch.. How can I enable it?

    1. At this time? Be happy with what you got 🙂
      Kidding. This one is actually somewhat easy; just enable whatever you want from the systems preferences pane (gui). I can’t recall the exact steps, tho. Lucky you are in “general problems” area that’s no longer bound to a specific and obscure hardware. Ask in your Distributions general forum.

      1. I tried it but in the settings the check to activate the multitouch there is (on the contrary of my other pc where the check is there and it works)

  20. Thank you for taking the time to share your work ,it seems that model is becoming popular and so many users fit up with
    windows not to mention that with this model as it has a limited drive space and can not be upgraded and the only choice is
    to use Micro SD for extra storage.
    I just wanted to point out for “” end users” like me with just the basic Linux knowledge that they have other options other
    than Ubuntu. Porteus linux works just fine with a little basic know how to get the touchpad working but broadcom 43142 works
    just fine.also for noobs puppy linux slacko ( http://distro.ibiblio.org/puppylinux/test/slacko64/6101/ ) works great on the S21e-20 (both touchpad and wifi works easy wifi driver fix http://murga-linux.com/puppy/viewtopic.php?p=885083#885083 ) and its
    less than 250MB running from usb drive.
    I just wish Lenovo would of worked on the Bios to allow booting from TF ,that would of made using this model a very convenient “IdeaPad”for those who choose to use linux instead of windows.
    Thanks again for sharing ,it really helped.

  21. I installed Xubuntu 14, 32 bit version and the touchpad did not work.
    However, when I installed the 64 bit version it worked!
    So, stick with 64 bit.
    32 bit is being phased out.

  22. Another S21e problem… microphone does not work with Skype. Have you any knowledge of the fix?

    Hello Christian, this is LeeM and i really enjoy the fixes you located for the Lenovo S21e touch pad.

    Skype does not work on the Lenovo S21e and here is what I have learned so far:

    There seems to be a problem that Skype expects a stereo built in mirophone. Meanwhile, the laptop has a monophonic microphone. The pulseaudio software provides to skype two identical audio channels except that the channels are inverted. When skype uses the built in microphone all the remote user hears is hiss from the two audio channels cancelling themselves out. Using a volume control application one can briefly hear the internal microphone working when you push one of the stereo channels down to zero. But the volume control will not stay locked with one channel turned off.

    I downloaded the source code to the pulseaudio software and sort of left the project lying there, no Skype usable yet for me. Have you noted any fixes for the Skype – Pulseaudio Linux problem?

  23. For me it’s still not working neither with kernel 4.3 nor 4.4, I am using archlinux but also tried without success on a Debian with kernel 4.3. The touchpad is partially working with an old blackarch live iso so it’s not a hardware problem, I can’t figure out why the new kernel doesn’t work properly, it should have the required patches by default…any suggestion?

    1. I’ve got the same problem here. Latest version of Xubuntu 16.04, 4.4.0-21-generic and no working touchpad and wifi.

  24. What the heck, why is this so hard, its just a touchpad and wifi adapter…Shall i go back to windows or will there be an update do you think?

    1. Hey,

      I hardly doubt the fix will reach the public distributions. You could try the current Fedora 24- it has a 4.7.5 kernel already.
      Me, I am sticking with Mint 17 and my patched kernel; works like a charm.

      And the next distirbution upgrade well, I guess that comes with a new notebook as well.

  25. In November 2016 I decided to upgrade my Lenovo S21e from the custom kernel described on your alpha-net web pages.

    The new Ubuntu 16.04 LTS Xenial Xerus has a kernel with the Ubuntu name “Linux 4.4.0-45-generic”. On the new kernel sound and the touchpad work but the built in wireless device does not work.

    From my first day of trying to get the wireless working, here is a simple fix: on the Gnu Grub boot screen, select Advanced Options and boot the the old kernel named “Ubuntu, with Linux 4.1.6-lenovo-s21e”

    1. I have reached the point of finding a difference in the boot up messages between
      the …lenovo-s21e kernel and the Ubuntu 4.4.0-45-generic kernel present in Ubuntu 16.04 LTS.

      The kernels are very different. Trying to run diff on the two dmesg texts gives too many lines of data.
      I use grep and look for the first few letters of Broadcom to pick up how the kernels differ in their recognition of the wireless networking hardware.

      grep ‘Bro’ dmesg_for_upstart_kernel_4.*

      dmesg_for_upstart_kernel_4.1.6-lenovo-s21e:[ 1.797863] usb 1-4: Manufacturer: Broadcom Corp
      dmesg_for_upstart_kernel_4.1.6-lenovo-s21e:[ 4.774247] eth0: Broadcom BCM4365 802.11 Hybrid Wireless Controller 6.30.223.248 (r487574)
      dmesg_for_upstart_kernel_4.4.0-45-generic:[ 2.308733] usb 1-4: Manufacturer: Broadcom Corp

  26. Good news, wireless now working as follows

    History, I installed Ubuntu 16.04 LTS “Xenial Xerus” on my Lenovo S21E.

    Sound and trackpad work. Built in wireless does not work.

    Here is the easy simple solution: Install all three of the major Broadcom packages

    sudo apt-get install the following three packages:

    broadcom-sta-common – Common files for the Broadcom STA Wireless driver
    broadcom-sta-dkms – dkms source for the Broadcom STA Wireless driver
    broadcom-sta-source – Source for the Broadcom STA Wireless driver

    Reboot. kinds seems too simple but it has worked 3 minutes so far.

    1. I installed Xubuntu 16.04 LTS on my S21e-20.

      Sound works, trackpad still doesn’t. Installing the three broadcom packages solved my Wi-Fi. Still trying to fix the trackpad though. Thanks for your update, Lee!

  27. Hello All.
    Another newbie here, although I’ve been playing with various distributions for the last 2 years. I have a ThinkPad T520 with Mint 18.1. The track pad worked before I started using it then stopped. Fn + F8 shows the trackpad icon on the screen with the “X” to show it’s turned off. Can’t get it to come back on. Ran a live distro of MINT just to check and the situation is unchanged. Mint 18.1 works fine on any of the earlier ThinkPads – I have 400, 410, 420, 430. even the T61s. I’ve been using a cable for LAN so I’ll have to check the WLAN. IS the fix as easy as going to the “newest” kernel in 18.1? I haven’t the faintest idea how to compile anything and typically will only cut and paste lines into the terminal. Incidentally I also have an S-21e. The lightest machine I own. Directly from Lenovo on sale. Got 64 gb rather than 32. Still waiting to install MINT 18.X. I’ve become a ThinkPad & MINT junkie 8-).

Leave a Reply

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