# Touchpad is not recognized on Lenovo Ideapad 330S-14IKB



## ionutm80 (Mar 22, 2019)

Hello,

I have banging my head to the wall for 2 weeks already and I could not find a solution to activate the touchpad on my laptop. So below are all the info I thought to post, if you think I should present more please let me know:

FreeBSD: FreeBSD-12.0-STABLE-amd64-20190321-r345358 from 21.03.2019

Laptop model: Lenovo Ideapad 330S-14IKB, Core I3 7020U Kaby Lake processor with Intel HD Graphics 620, I really don't know the type of touchpad I have, dmidecode shows the following:

```
Handle 0x002B, DMI type 21, 7 bytes
Built-in Pointing Device
    Type: Touch Pad
    Interface: PS/2
    Buttons: 4
```
while dmesg shows the following:

```
ig4iic_pci0: <Intel Sunrise Point-LP I2C Controller-0> mem 0xb1133000-0xb1133fff irq 16 at device 21.0 on pci0
ig4iic_pci0: Using MSI
pci0: <simple comms> at device 22.0 (no driver attached)
```
I have enabled the following in /etc/rc.conf:

```
zfs_enable="YES"
hald_enable="YES"
dbus_enable="YES"
slim_enable="YES"
kld_list="/boot/modules/i915kms.ko"
moused_enable="YES"
```
and in /boot/loader.conf:

```
ig4_load="YES"
hw.psm.synaptics_support="1"
hw.psm.elantech_support="1"
hw.psm.trackpoint_support="1"
```
and in /etc/sysctl.conf:

```
kern.evdev.rcpt_mask=12
```
Is there something that I'm not doing right, in dmesg I see 2 issues:

```
pci0: no driver attached
```
and Intel Sunrise Point-LP I2C Controller instead of expected Intel Sunrise Point-H Controller as per ig4_pci.c from /sys/dev/ichiic/ig4_pci.c

Can you please help me to activate the touchpad? It's really annoying to be force to carry a mouse all the time.

Thanks a lot in advance!!!


----------



## SirDice (Mar 22, 2019)

ig4(4) has nothing to do with mice, it's for I2C and is commonly used with smbus(4). Your touchpad has a PS/2 interface, so you would only need to enable moused(8). I'd also remove the hw.psm. sysctls.


----------



## ionutm80 (Mar 22, 2019)

SirDice said:


> ig4(4) has nothing to do with mice, it's for I2C and is commonly used with smbus(4). Your touchpad has a PS/2 interface, so you would only need to enable moused(8). I'd also remove the hw.psm. sysctls.



Hi and thanks for feedback
moused is already enabled, I have removed all hw.psm from /boot/loader.conf

Still the touchpad is not active. Any other ideas?


----------



## SirDice (Mar 22, 2019)

ionutm80 said:


> Still the touchpad is not active. Any other ideas?


Can it be enabled/disabled in the BIOS perhaps?

Does dmesg(8) show any psm(4) devices?


----------



## ionutm80 (Mar 22, 2019)

I have attached the dmesg result, no psm devices present. I think the touchpad is connected via I2C.


----------



## SirDice (Mar 22, 2019)

ionutm80 said:


> I think the touchpad is connected via I2C.


It's not. I2C is used for the system's management bus (sensors, power control, that sort of thing). It has never been used for mice. 

Make sure to remove your USB mouse. If I recall correctly some laptops automagically switch off the touchpad if an external mouse is detected.


----------



## ionutm80 (Mar 22, 2019)

I have removed the USB mouse and restarted, nothing happened. Whatelse can I try?


----------



## shepper (Mar 22, 2019)

This laptop line has touchpad issues in Bleeding edge linux.
Debian Forums Lenovo 330 touchpad

Arch Linux wiki Lenovo 330

You are breaking new ground in FreeBSD.  It may be more productive to reach out to the FreeBSD developers (kernel/xorg).  Given Lenovo's market dominance, there should be some motivation to start working on this.


----------



## ionutm80 (Mar 22, 2019)

Hi, I've tried Ubuntu 18.10 on the same laptop and the touchpad was recognized.


----------



## ionutm80 (Mar 22, 2019)

Hi this is what happened also in Ubuntu prior to 18.04.2, see below:
"The touchpad of the Lenovo 330 series is not detected at boot due to its ACPI id not being present in the kernel driver."
https://askubuntu.com/questions/1049787/lenovo-ideapad-330-touchpad-not-working find the

Any brave soul can guide me how can I find the ACPI device ID for this touchpad and then how to recompile the kernel with it?


----------



## Minbari (Mar 22, 2019)

Salut, you need to add

```
hw.psm.elantech_support="1"
```
in /boot/loader.conf  and have x11/libsynaptics and x11-drivers/xf86-input-synaptics installed on your system. Also it may be needed to add:

```
hw.psm.elantech.min_pressure=22
hw.psm.elantech.two_finger_scroll=0
hw.psm.elantech.vscroll_ver_area=-600
```
to etc/sysctl.conf for two-finger scrolling.


----------



## ionutm80 (Mar 23, 2019)

Minbari said:


> Salut, you need to add
> 
> ```
> hw.psm.elantech_support="1"
> ...



Done that already, no luck.


----------



## ionutm80 (Mar 25, 2019)

Hi guys, any other info I can provide that might give some hints what I'm doing wrong?


----------



## ionutm80 (Mar 28, 2019)

Hi again, I have removed FreeBSD 12 STABLE and installed Win 10 on the laptop, touchpad was recognized immediately as it was also the case on Ubuntu 18.10.
In the device manager manager it shows clearly that is connected via I2C but it does not show the brand of the producer. In the end this is a deal breaker for me since we are talking about a laptop, if it was a desktop would have been a different case.

Other hickups encountered which made me drop FreeBSD for the moment, maybe I'll come back in the future ... :
1. I could not mount an USB Blu-Ray drive neither with autofs nor with 3rd party tools like automount or DSBMD/DSBMC, USB HDD and Memory Sticks worked well. MakeMKV does not exist on FreeBSD except a very limited version which is very old, hence no chance to use the laptop in case I want to rip a blu-ray disk.
2. HPLIP for HP printer did not work, neither from pkg nor from ports, it failed to install due to a missing 32 bits library and I did not manage to use my HP with CUPS.
3. HW Video acceleration with MPV and VAAPI / libva-intel-media-driver worked quite well (24-30% CPU load vs. 3-5% in Windows with DXVA) but only in windowed mode, in full screen the video had constant frame drops and was not fluid. 
4. I could not install VLC even from ports.
5. No chance to make sleep / resume working on this laptop.
6. drm-kmod and Compton compositor ensured beautiful graphics and no tearing whatsoever but I've spotted constant glitches on sub-menus of Cairo dock. 
7. Lack of 802.11ac support was very obvious when I tried to stream through wifi a blu-ray mkv rip from my FreeNAS. 

I really tried for 3 weeks to have a working FreeBSD laptop with everything that I can find in one click on either Windows or Linux but I had to admit that it's really is not there yet. Otherwise it's a masterpiece of stability / no freeze whatsoever no matter how hard I tried (in Ubuntu I had 2-3 screen freezes, 1 kernel panic and multiple looping errors, for Windows I won't even bother to list all the issues I have ...). The OS in its self is very easy to learn and understand: at the beginning of this 3 weeks journey I had never used before a BSD system (Linux does not count here) and in 2 weeks I was able to understand the minimum commands that you need to be able to surf through it. It really is a pity that the end user experience is still in an early phase otherwise I would trade w/o regrets any flavor of Linux or Windows for the stability of FreeBSD.

I will keep watching the evolution of the FreeBSD and most probably will try again when 13 will be ready.


----------



## Minbari (Mar 28, 2019)

You picked the wrong laptop to install FreeBSD, most of us here are using Thinkpads X or T series because they have the best support. Most of the drivers for Thinkpads are coming from OpenBSD or NetBSD because developers there are using them, not like FreeBSD developers who are using MacBooks. If you really want to use FreeBSD then for 150€ you can buy a cheap T430/T440 from olx or okazii.


----------



## ionutm80 (Mar 29, 2019)

Minbari said:


> You picked the wrong laptop to install FreeBSD, most of us here are using Thinkpads X or T series because they have the best support. Most of the drivers for Thinkpads are coming from OpenBSD or NetBSD because developers there are using them, not like FreeBSD developers who are using MacBooks. If you really want to use FreeBSD then for 150€ you can buy a cheap T430/T440 from olx or okazii.


Merci!


----------



## gnemmi (May 6, 2019)

Sad but true, the touchpad on the Lenovo 330s actually is connected to the i2c bus and FreeBSD has no support as of yet.

I'm going to leave the following link for further information:






						⚙ D16698 First draft HID over I2C support (Mouse only)
					






					reviews.freebsd.org


----------



## ring_zero (Sep 15, 2019)

So, this is a little late, but I wound up here more than once.  You can get the touchpad to work using the information at D16698 mentioned above. It will not build on 13.0-CURRENT or 12-STABLE at present.  However, it will build on 12-RELEASE and 12.1-PRERELEASE.  If you decide to apply the patches to get the touchpad be advised that it will be extremely difficult to use.  Off while typing doesn't work, there is no two finger scroll, and I could not find a way to turn off/decrease the sensitivity for tapping either.  I am running 13.0-CURRENT on this exact model at the moment, because I want to start learning about kernel development and I figured the touchpad might be an okay place to start.  The major issue with this touchpad (as far as I can tell) is that the  touchpad is i2c, but managed through ACPI.  There are some other models that are managed through the PCI bus and they seem to have better working support.  Going by what I have read on the lists and everywhere else, this is an area of active development.  I went with a wireless USB mouse at the moment.  Honestly, I will be buying a Thinkpad in 2020, I'm holding out for a moment while I plan the system.  If you absolutely MUST have the Lenovo 330s in any of it's myriad variants, the touchpad will work on OpenBSD.  I will be putting together a post at some point that will have all of the information I have a massed on getting this machine to work, Graphics, Sound, USB, PCIe NVME, Network, Suspend/Resume (it does work on 12-RELEASE, 12-STABLE, 12.1-PRERELEASE, and 13.0-CURRENT) etc.  I'm sorry I don't have a timeline on when I will have this done, I am extremely busy at work right now, and I have little free time...

<Begin Rant>
So, I am guilty of this as well, but I have seen quite a bit of ill will and nonsense while playing around trying to get this machine to behave as expected.  I'm going to take a minute to throw a couple of things out there; feel free to agree or disagree.

You want to run a desktop on FreeBSD?  Go for it.  It can do that.  It can do that really well actually, but there are a few caveats...
a) FreeBSD as far as I know (correct me if I'm wrong) has always been more of a server operating system.  This means that graphical environments are not necessarily a priority for the development team.  (They do work really hard on it though.  So much progress has been made since I last used FreeBSD in 2012)
b) Stop the Windows/Linux(sadly) operating model of {Buy a machine, slap the OS on there, complain about lack of hardware support} RESEARCH the OS first, THEN make an educated decision on what hardware to buy.  Apple follows this operating model, and they have the most seamless experience I have ever seen.  You can have that too.  If you would like to explore the mobile aspect of FreeBSD, this is the path you should take, or you will be pulling your hair out.  
	

			Laptops - FreeBSD Wiki
		

 exists for this purpose... 
c)  FreeBSD is highly configurable.  The upside is that you can do pretty much whatever you want with it.  The downside is that you have to configure it. If that bugs you, pick a different OS.  There is a post on the forums somewhere that reads, "If FreeBSD stopped you from doing dumb things, it would stop you from doing clever things as well."  Those are words to live by.
d) Finally, I have gone through many forum posts trying to find solutions to various issues.  I see the OP threatening to go back to Windows, Linux, et al.  People, please stop that.  No one is lying awake at night because you're back on Windows.  Stop trying to get results this way.
</ rant>


----------



## Dan Dan (Feb 17, 2020)

Hi all, I came across this thread as I have the same issue with the touchpad not working on a Lenovo ideapad.
Is anyone aware of any update on this topic? Thanks and happy freeBSD hacking!


----------



## aragats (Feb 18, 2020)

Dan Dan said:


> I have the same issue with the touchpad not working on a Lenovo ideapad.
> Is anyone aware of any update on this topic?


It indeed looks to be a i2c device. Try this driver. However, you may need FreeBSD 13.0, but it's worth trying with 12.1.
You'll need to install FreeBSD source, get that driver's source code and build it by running `make` in its directory. Pretty straight forward. When loaded, it creates new /dev/input/eventX device(s), so can be used with X. As far as I know, it's not suitable for console yet.


----------



## KenGordon (Feb 18, 2020)

I am having much the same trouble with the touchpad on this Acer Aspire One I am working with. The touchpad is, most likely, I2C based. I'll try the suggested driver mentioned immediately above, and thanks.

Ken Gordon


----------



## ionutm80 (Mar 3, 2020)

ring_zero said:


> <Begin Rant>
> d) Finally, I have gone through many forum posts trying to find solutions to various issues.  I see the OP threatening to go back to Windows, Linux, et al.  People, please stop that.  No one is lying awake at night because you're back on Windows.  Stop trying to get results this way.
> </ rant>



Hi and sorry for late reply! I think you got it all wrong, please read carefully what I have written before making judgement. I did not threaten in anyway that if I do not get help I will switch to Linux/Windows ... I did it directly. A Thinkpad, new not used, is out of reach of my pocket so yeah the fact that FreeBSD is butter smooth on it kind of defeats its purpose of a free OS but this is another discussion. I highly praise FreeBSD for the work of all volunteers who contribute to the source code or maintain the ports, I even use it on a day to day basis as a home server in the form of FreeNAS and UTM in the form of PFSense. However in the laptop territory it does not perform well, not now, maybe will be rock solid in the future. For me it was quite an experience to make it work on this specific model of laptop and I tried hardly to succeed since I was amazed by its stability in operation. What I tried with this post was to find help from fellow tinkerers with some specific issues and not to complain at all about something missing in FreeBSD so please stop ranting just for the sake of ranting otherwise your comments have 0 (zero) value added for the community! Thanks in advance!


----------



## jjachuf (Feb 4, 2021)

Hi there You can try the following

1) Install iichid
# pkg install iichid

2) Load module to kernel
# kldload iichid

With that you should already have the touchpad working

3) In /etc/rc.conf
kld_list="iichid etc etc etc"

best regards
Jose


----------



## aswell (Dec 11, 2021)

For future reference, there is now an easy solution for I2C touchpads....

There is a recent article on the FreeBSD Foundation website, and it appears iichid is now included in 13.0-RELEASE. Just add the appropriate bits to /boot/loader.conf and reboot.


----------

