PDA

View Full Version : Logitech K400 Plus/SLES on Raspberry Pi 3 - activate module?



hdtodd
30-Dec-2016, 18:30
This question arose in an earlier thread with other issues. I'm starting a new thread to separate it from the other issues, and with some additional information.

I'm running SLES 12, aarch64, on a Raspberry Pi 3. On both Raspbian and Fedora running on the Pi, the OS saw the K400 Plus keyboard on first boot, and that keyboard/trackpad worked just fine. On SLES 12, it didn't see the K400+ (apparently), and I've had to plug in a USB kbd & mouse to do any work. I'd like to try (again) to get the K400+ working on SLES -- I'm liking SLES, but I really need to get rid of the USB devices on my Pi.

I did find and install the Solaar package. WARNING: the version from the SUSE repository is outdated, even though the version numbers are the same! Go to the Github repository ( https://github.com/pwr/Solaar ) and download the zip from there; unzip it; connect to the Solaar master directory; and run the setup.py program there ("build" and then "install"). The updated version on Github includes support for the K400+.

The problem is that Solaar is used to pair and configure Logitech devices. It isn't the driver for kbd/mouse that the kernel needs. That driver appears to be loaded as a module, but the keyboard still doesn't work. The kbd/trackpad are paired to the USB wireless dongle, and Solaar sees and can configure it just fine, but the kbd doesn't interact with the OS.

Solaar reports:
Index : 1
Wireless PID : 404D
Protocol : HID++ 2.0
Polling rate : 8 ms (125Hz)
Serial : ABAF0629
Bootloader : BOT 22.01.B0001
Firmware : RQK 63.01.B0014
Other :

modinfo reports:
pi-6:~ # modinfo hid_logitech_dj
filename: /lib/modules/4.4.21-90-default/kernel/drivers/hid/hid-logitech-dj.ko
author: nlopezcasad@logitech.com
author: Nestor Lopez Casado
author: Logitech
license: GPL
srcversion: F3A9F93C83C7C05995A1FE7
alias: hid:b0003g*v0000046Dp0000C532
alias: hid:b0003g*v0000046Dp0000C52B
depends:
supported: yes
intree: Y
vermagic: 4.4.21-90-default SMP mod_unload modversions aarch64
signer: SUSE Linux Enterprise Secure Boot Signkey
sig_key: 3F:B0:77:B6:CE:BC:6F:F2:52:2E:1C:14:8C:57:C7:77:C7 :88:E3:E7
sig_hashalgo: sha256

So it appears that the driver has loaded, and the USB dongle is paired, but the kernel isn't seeing the characters come from the kbd/trackpad.

Has anyone gotten this combination to work? I'm pretty sure this is a simple configuration error on my part, but after much trying, I still haven't gotten it to work.

Thanks for any suggestions you can offer.

malcolmlewis
30-Dec-2016, 19:59
On Fri 30 Dec 2016 05:34:01 PM CST, hdtodd wrote:

This question arose in an earlier thread with other issues. I'm
starting a new thread to separate it from the other issues, and with
some additional information.

I'm running SLES 12, aarch64, on a Raspberry Pi 3. On both Raspbian and
Fedora running on the Pi, the OS saw the K400 Plus keyboard on first
boot, and that keyboard/trackpad worked just fine. On SLES 12, it
didn't see the K400+ (apparently), and I've had to plug in a USB kbd &
mouse to do any work. I'd like to try (again) to get the K400+ working
on SLES -- I'm liking SLES, but I really need to get rid of the USB
devices on my Pi.

I did find and install the Solaar package. WARNING: the version from
the SUSE repository is outdated, even though the version numbers are the
same! Go to the Github repository ( https://github.com/pwr/Solaar ) and
download the zip from there; unzip it; connect to the Solaar master
directory; and run the setup.py program there ("build" and then
"install"). The updated version on Github includes support for the
K400+.

The problem is that Solaar is used to pair and configure Logitech
devices. It isn't the driver for kbd/mouse that the kernel needs. That
driver appears to be loaded as a module, but the keyboard still doesn't
work. The kbd/trackpad are paired to the USB wireless dongle, and
Solaar sees and can configure it just fine, but the kbd doesn't interact
with the OS.

Solaar reports:
Index : 1
Wireless PID : 404D
Protocol : HID++ 2.0
Polling rate : 8 ms (125Hz)
Serial : ABAF0629
Bootloader : BOT 22.01.B0001
Firmware : RQK 63.01.B0014
Other :

modinfo reports:
pi-6:~ # modinfo hid_logitech_dj
filename:
/lib/modules/4.4.21-90-default/kernel/drivers/hid/hid-logitech-dj.ko
author: nlopezcasad@logitech.com
author: Nestor Lopez Casado
author: Logitech
license: GPL
srcversion: F3A9F93C83C7C05995A1FE7
alias: hid:b0003g*v0000046Dp0000C532
alias: hid:b0003g*v0000046Dp0000C52B
depends:
supported: yes
intree: Y
vermagic: 4.4.21-90-default SMP mod_unload modversions aarch64
signer: SUSE Linux Enterprise Secure Boot Signkey
sig_key:
3F:B0:77:B6:CE:BC:6F:F2:52:2E:1C:14:8C:57:C7:77:C7 :88:E3:E7
sig_hashalgo: sha256

So it appears that the driver has loaded, and the USB dongle is paired,
but the kernel isn't seeing the characters come from the kbd/trackpad.

Has anyone gotten this combination to work? I'm pretty sure this is a
simple configuration error on my part, but after much trying, I still
haven't gotten it to work.

Thanks for any suggestions you can offer.

Hi
A missing kernel module - hid_logitech_hidpp

I have a K400r and connected to a laptop running SLED 12 SP2 and it
works fine but uses the above module. Give me a few and will look at
building a module (as a kmp) to see if all works.

--
Cheers Malcolm °¿° SUSE Knowledge Partner (Linux Counter #276890)
openSUSE Leap 42.1|GNOME 3.16.2|4.1.36-41-default
If you find this post helpful and are logged into the web interface,
please show your appreciation and click on the star below... Thanks!

malcolmlewis
30-Dec-2016, 22:07
Hi
So building that module makes my Logitech 400r spring into life, so you can download the src rpm and rebuild that locally, the reason for this is the kernel has updated and OBS only has the default kernel. Or you could just rebuild the modules in /usr/src/linux-4.4.21-90/drivers/hid and manually install the hid-logitech-hidpp.ko in /lib/modules/4.4.21-90-default/updates/.

Else grab the src rpm from;
http://download.opensuse.org/repositories/home:/malcolmlewis:/SLES12-SP2-RPI-Extra/SLES12-SP2-RPI-Extra/

At present it's still scheduled to build;
https://build.opensuse.org/package/show/home:malcolmlewis:SLES12-SP2-RPI-Extra/hid-logitech-hidpp

Then install;


zypper in kernel-source make gcc rpm-build


NOTE: If using the kmp you also need to set /etc/modprobe.d/10-unsupported-modules.conf to 1.

Then as you user (not root) rebuild the rpm;


rpmbuild --rebuild hid-logitech-hidpp-{the version}.src.rpm
su -
zypper in /home/youruser/rpmbuild/RPMS/aarch64/hid-logitech-hidpp-kmp-default-4.4.21_k4.4.21_90-0.aarch64.rpm


Unplug and re-plug the receiver and should see something like the following if running journalctl -f


Dec 30 14:54:04 statler0 kernel: usb 1-1.4: USB disconnect, device number 12
Dec 30 14:54:08 statler0 kernel: usb 1-1.4: new full-speed USB device number 13 using dwc2
Dec 30 14:54:08 statler0 kernel: usb 1-1.4: New USB device found, idVendor=046d, idProduct=c52b
Dec 30 14:54:08 statler0 kernel: usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Dec 30 14:54:08 statler0 kernel: usb 1-1.4: Product: USB Receiver
Dec 30 14:54:08 statler0 kernel: usb 1-1.4: Manufacturer: Logitech
Dec 30 14:54:08 statler0 kernel: logitech-djreceiver 0003:046D:C52B.0021: hiddev0,hidraw0: USB HID v1.11 Device [Logitech USB Receiver] on usb-3f980000.usb-1.4/input2
Dec 30 14:54:08 statler0 kernel: hid_logitech_hidpp: loading out-of-tree module taints kernel.
Dec 30 14:54:08 statler0 kernel: input: Logitech K400 as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.2/0003:046D:C52B.0021/0003:046D:4024.0022/input/input2
Dec 30 14:54:08 statler0 kernel: logitech-hidpp-device 0003:046D:4024.0022: input,hidraw2: USB HID v1.11 Keyboard [Logitech K400] on usb-3f980000.usb-1.4:1
Dec 30 14:54:17 statler0 kernel: logitech-hidpp-device 0003:046D:4024.0022: HID++ 2.0 device connected.

hdtodd
31-Dec-2016, 14:10
Good Morning, Malcom,

THANKS! That was exactly what I needed ... I'd never have figured it out on my own. This yielded a working Logitech K400+ kbd/trackpad on SLES 12 running on Raspberry Pi 3:


(connect to my home directory, download the rpm to which your link points)
su
zypper in kernel-source make gcc rpm-build kernel-syms
su hdtodd (my non-root account)
rpmbuild --rebuild hid-logitech-hidpp-4.4.21-4.1.src.rpm
exit (return to root)
zypper in /home/hdtodd/rpmbuild/RPMS/aarch64/hid-logitech-hidpp-kmp-default-4.4.214.4.21_k4.4.21_90-4.1.aarch64.rpm
(unplug and replug the Logitech USB dongle)
It works!


Note the addition of "kernel-syms" to that first zypper command: first build attempt failed without the symbols.
I have yet to reboot to make sure the module installs at boot time. I will verify that next and post if there's a problem, but I
wanted to get this documented (AND THANK YOU!) first.

I did try two other approaches first, and I'll document those for others, in reverse order.

Second, I tried to follow your instructions and rebuild the modules in /usr/src/linux-4.4.21-90/drivers/hid and then manually install the hid-logitech-hidpp.ko in /lib/modules/4.4.21-90-default/updates/.
Unfortunately, when I tried an insmod, the system reported something about not having symbols (I've lost the exact message) and wouldn't load the module. So I went to your RPM and that
process was successful.

But my first attempt was also successful, except that I've forgotten how to cause modules to be loaded at boot time (or the process
has changed enough over the years and my memory wouldn't have served me). It did generate a functioning .ko file, though.
For those following this, here's what I did. I googled for "building hid-logitech-hidpp" and found this link (among others):
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0ahUKEwj-t7eW5JzRAhVDSSYKHdsmC9UQFgg_MAU&url=http%3A%2F%2Fsteamcommunity.com%2Fgroups%2Flin uxff%2Fdiscussions%2F0%2F405692224235574471%2F&usg=AFQjCNHud0rZnrlt8eSNcEmc0tYnbYq_Jw&sig2=E_3rYFfxzwSJfjfKEf4t1w&bvm=bv.142059868,d.eWE&cad=rja

And from that followed his link to this page (which is where you really want to go):
http://steamcommunity.com/groups/linuxff/discussions/0/405692224235574471/
and downloaded the driver zip from his dropbox site:
https://www.dropbox.com/s/n4bmw631d4t1m0t/LogitechFFDrivers.zip?dl=0

Copied the .zip to my RPi/SLES system; created a directory for it and unzipped into that directory; did a make (the hidpp.ko file is the last thing made); copied that hid_logitech_hidpp.ko file to /lib/modules/4.4.21-90-default/kernel/drivers/hid (my current SLES version); unplugged and re-plugged the USB dongle in my RPi-3. And VOILA! Both the keys and the trackpad on the K400Plus were functioning. Again, the only problem was that the module wasn't loaded on reboot.

I'm much more comfortable with your RPM build process since I think it yields a result that will be consistent across future updates. Thanks SOOO much for the instructions!

David

malcolmlewis
12-Jan-2017, 15:54
Hi David
Just an FYI, this has been fixed and should in theory pop out with the next kernel update. So you should be able to remove the kmp, kernel-source etc and reset the unsupported modules option and all should be good to go and not need a rebuild :)

hdtodd
15-Jan-2017, 18:19
Thanks for the heads-up, Malcom. I got a kernel update at about the same time as your posting, so I think I'll wait until the next kernel update before reverting mine. Though I do have VNC working now so can get at the SUSE GUI from my Mac. I'm liking it more and more! About time to install a SSD or hard disk copy attached to my Pi-3. It really performs quite well, even on the microSD card; should be quite respectable with a USB-attached drive (which is how I run Raspbian on my other Pi-3).

Thanks again for your help on this: it really made a difference.

David