Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Need a nonexistant driver for my fingerprint reader on a lenovo laptop running ubuntu 20.04

Go to solution Solved by Nayr438,

You could take a look at these

https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/173

https://gitlab.collabora.com/ao2/goodix_fp_dump

 

If the device is read as a usb device by lsusb, you can use wireshark to dump the data in Windows (simplest method), otherwise you can capture data with Wireshark on the host by monitoring the VM.

 

Creating device drivers or sending raw data in general to a device tends to result in dead hardware, its not advisable to develop drivers for a device you are currently using and depend on but to rather purchase a cheap low grade device that you don't mind dying during testing and development.

So I made my Lenovo flex 14 API dual boot with a instance of ubuntu 20.04, and the win10 it came with. Now I'm trying to get the fingerprint reader to work, but after some research I realised that a driver for this fingerprint reader 

 

https://linux-hardware.org/index.php?id=usb:27c6-55b4

 

Does not have a driver. So I am stuck with either waiting for someone else to make one, or do it myself. But I've never made a driver. So Can someone give me a starting ground for it. 

 

Also, I'm not sure whether this should go here or in programming, but every time I've had a moderator move a thread, it instantly died, sooo.

Link to post
Share on other sites

Fingerprint scanners on Linux are quite a mess, it seems. On my Lenovo there's also a fingerprint scanner (Synaptics WBDI) that also doesn't have any drivers available because they simply don't exist for anything but Windows. So I guess your search won't be successful.

Link to post
Share on other sites

It's not as easy as it sounds to develop your own driver. Best I can give you is to look into Linux kernel module development and look at source codes for fingerprint reader drivers.

Link to post
Share on other sites

There would have to be a lot of reverse engineering work to build you own driver, of both the fingerprint reader and Ubuntu. I have memories of hearing a few months back that Lenovo was working with Canonical to build in fingerprint support but I could be crazy and it could be for a different device. I think you best bet is to cross you fingers and wait.

Link to post
Share on other sites

Well, I'm supposed to be a comp science major, so even if i fail at this, I'd figured that it'll be a good learning experience. And I doubt it, Lenovo still ships their computers with locked bios, so you have to buy their hardware to upgrade your computer. Doesn't sound like a company that likes linux's open nature

 

Link to post
Share on other sites
Just now, Tedstonegenious said:

Well, I'm supposed to be a comp science major, so even if i fail at this, I'd figured that it'll be a good learning experience. And I doubt it, Lenovo still ships their computers with locked bios, so you have to buy their hardware to upgrade your computer. Doesn't sound like a company that likes linux's open nature

 

 

What did you expect? No OEM is going to cater towards Linux until it's used more widely in desktop environments.

Link to post
Share on other sites
Just now, linuxfur said:

 

What did you expect? No OEM is going to cater towards Linux until it's used more widely in desktop environments.

Did I say I expected something different? Why do you think I want to develop a driver for it instead of waiting

Link to post
Share on other sites
8 minutes ago, mail929 said:

I have memories of hearing a few months back that Lenovo was working with Canonical to build in fingerprint support but I could be crazy and it could be for a different device. I think you best bet is to cross you fingers and wait.

Well, de facto Ubuntu has built-in fingerprint support already, but there just aren't any drivers. Lenovo wants to "commit to releasing Linux drivers for ThinkPad devices" IIRC, but haven't they been saying that for a long time already? Not to mention that this specific fingerprint scanner only seems to be used in this specific Lenovo Flex 14API, IdeaPad S540/740, IdeaPad C340/640/740 and apparently also in ThinkPad L13, E490 and E590. Since it is in lower-end ThinkPads there might be a small chance that we'll get to see drivers, but I wouldn't really count on it. My Synaptics WBDI has been in ThinkPads as well IIRC for over 3 years and there still aren't any drivers - even though Synaptics is quite large in terms of fingerprint and touchpads. Self-made drivers might be very hard to make and I doubt that the manufacturers suddenly start releasing them. Especially this "Shenzhen Goodix" of which I've never heard before.

Link to post
Share on other sites
2 minutes ago, Benji said:

Well, de facto Ubuntu has built-in fingerprint support already, but there just aren't any drivers. Lenovo wants to "commit to releasing Linux drivers for ThinkPad devices" IIRC, but haven't they been saying that for a long time already? Not to mention that this specific fingerprint scanner only seems to be used in this specific Lenovo Flex 14API, IdeaPad S540/740, IdeaPad C340/640/740 and apparently also in ThinkPad L13, E490 and E590. Since it is in lower-end ThinkPads there might be a small chance that we'll get to see drivers, but I wouldn't really count on it.

again, this is why I want to build the driver myself, can someone just point me to sources on how to revers engineer the device/os, I know this'll be a long and hard project. But I want to try

 

Link to post
Share on other sites
Just now, Tedstonegenious said:

again, this is why I want to build the driver myself, can someone just point me to sources on how to revers engineer the device/os, I know this'll be a long and hard project. But I want to try

 

 

13 minutes ago, linuxfur said:

It's not as easy as it sounds to develop your own driver. Best I can give you is to look into Linux kernel module development and look at source codes for fingerprint reader drivers.

 

Link to post
Share on other sites
7 minutes ago, Tedstonegenious said:

again, this is why I want to build the driver myself, can someone just point me to sources on how to revers engineer the device/os, I know this'll be a long and hard project. But I want to try

 

Just out of curiosity... Do you have any idea of any programming language? Preferrably C or Assembly or the like? Because that's what you'll usually need for the Linux kernel and a lot of source code. And it's not just simply learned and a few lines added, either. That's why it's being said here that it doesn't "just happen" and that it definitely isn't easy.

Link to post
Share on other sites
1 minute ago, Benji said:

Just out of curiosity... Do you have any idea of any programming language? Preferrably C or Assembly or the like? Because that's what you'll usually need for the Linux kernel and a lot of source code. And it's not just simply learned and a few lines added, either. That's why it's being said here that it doesn't "just happen" and that it definitely isn't easy.

This.

I hate to be that person but being a major in computer science is only one small piece to your puzzle. 

Link to post
Share on other sites
13 minutes ago, Tedstonegenious said:

I don't know C, But i do know lua which is based off of c, that and javascrip/python

 

That's basically where one of the issues start.

13 minutes ago, linuxfur said:

This.

I hate to be that person but being a major in computer science is only one small piece to your puzzle. 

Not to mention that a major in computer science doesn't give you the data sheet for the microcontroller responsible for the fingerprint reader, because the files that you'll obviously need to write for the driver need to address the appropriate commands at the appropriate addresses and these documents are hard, sometimes even impossible to come by. Without knowing how the controller addresses and controls what, you can't just "write a driver". Reverse engineering can also mean running the originial driver or trying addresses and commands around until you get to at least one functions registers, but even that won't be enough because you'll need to address a lot of functionality. It is a really advanced project that is basically impossible with deep knowledge required to reverse engineer, or the appropriate experience and facility in usually C and the actual data sheet for the controller at hand. And should the first part be accomplished (facility at that language), it'll usually hit a wall at the latter point.

Link to post
Share on other sites
1 minute ago, Tedstonegenious said:

You guys are acting like "something is hard" is a synonym for "not to bother with"

 

Because writing drivers and/or porting them to a completely new kernel is not a one-man job. You're starting off with little to no prior knowledge or experience on this which will most definitely take this years to accomplish. There's a lot more to this than you realize.

Link to post
Share on other sites

-> Moved to Linux, macOS and Everything Not-Windows

^^^^ That's my post ^^^^
<-- This is me --- That's your scrollbar -->
vvvv Who's there? vvvv

Link to post
Share on other sites

You could take a look at these

https://gitlab.freedesktop.org/libfprint/libfprint/-/issues/173

https://gitlab.collabora.com/ao2/goodix_fp_dump

 

If the device is read as a usb device by lsusb, you can use wireshark to dump the data in Windows (simplest method), otherwise you can capture data with Wireshark on the host by monitoring the VM.

 

Creating device drivers or sending raw data in general to a device tends to result in dead hardware, its not advisable to develop drivers for a device you are currently using and depend on but to rather purchase a cheap low grade device that you don't mind dying during testing and development.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×