# [Solved] cannot get laptop hardware functioning

## The_Document

Booted binary distro and all hardware worked however I could not get bluetooth and touchpad to work under gentoo. Heres lsmod and dmesg from binary dist

lsmod

http://dpaste.com/2CEK64W

dmesg

http://dpaste.com/2GYFKKC

current kernel config

http://dpaste.com/3A0T5TM

this is about my 8th time installing gentoo and unfortunately if i cannot get hw to work I will have to distro hop.Last edited by The_Document on Sat Jun 02, 2018 2:26 am; edited 1 time in total

----------

## krinn

Try change your ultimatum with "build me my gentoo or i'll kill that cute puppy" thread, it could had work better.

Go use your binary distro ; if you are in total anger, we have a "gentoo is dying" thread (actually more than just one) that could be bump if you are in mood to post crap while leaving.

----------

## The_Document

 *krinn wrote:*   

> Try change your ultimatum with "build me my gentoo or i'll kill that cute puppy" thread, it could had work better.
> 
> Go use your binary distro ; if you are in total anger, we have a "gentoo is dying" thread (actually more than just one) that could be bump if you are in mood to post crap while leaving.

 

I'm not in any kind of anger, setting up a kernel which is set up  to run only on the hardware which is present is not an easy task granted there are very few guidelines. I'm in the unfortunate situation where I cannot have working hardware with gentoo running on it. I made this post to see if there are things which are missed, or perhaps a wiki or some explanation to determine hardware codes to kernel drivers. For instance, this prompt and menu entry named pin controllers does not exist, if it did I would have likely already gotten hardware to work.

https://preview.ibb.co/e41Pvo/IMG_20180524_022334.jpg

Configuring the kernel is confusing enough for me to just distro hop and I did not bring anything up about gentoo dying or similar things.

----------

## krinn

 *The_Document wrote:*   

> I made this post to see if there are things which are missed, or perhaps a wiki or some explanation to determine hardware codes to kernel drivers.

 

The problem is not what you ask, but how you did.

 *The_Document wrote:*   

> 
> 
>  For instance, this prompt and menu entry named pin controllers does not exist, if it did I would have likely already gotten hardware to work.
> 
> 

 

Kernel entries have rules: could be either because something is missing or something is selected.

On your picture, you can see it depends on PINCTRL=n and ACPI=y, so if ACPI=n or PINCTRL=y the item may stay hidden.

----------

## The_Document

 *krinn wrote:*   

> ...the item may stay hidden.

 

It's still hidden is the only way to enable it by appending config file?

----------

## NeddySeagoon

The_Document,

You can search for hidden entries in menuconfig as follows:-

On a menu that does not use 'z' as a shortcut, press 'z'. This toggles the hiding and unhiding of all unselectable options.

You will see a new symbol

```
- -
```

against unselectable options.

The search will work and you can jump to any hidden option.

Read its Depends on: in the help.

Fix the Depends on: boolean expression to evaluate to true.

You may need to do apply the search,  fix the Depends on: boolean expression process recursively.

----------

## szatox

 *Quote:*   

> cannot get (...) functioning might distro hop

 You wouldn't believe the size of fck I don't give.

If you actually want to get help with your problem at hand, ask a proper question. Posting logs is good, yes, but they lack >>action<< so nobody is really going to read them just for fun.

You are supposed to know what you expect. You are supposed to know what doesn't meet your expectation. You are the one supposed to drive this topic.

Write it all down.

----------

## The_Document

 *NeddySeagoon wrote:*   

> ...press 'z'. This toggles the hiding and unhiding of all unselectable options.
> 
> You will see a new symbol...

 

I used both 

```
make menuconfig
```

 and 

```
make nconfig
```

and z did not toggle anything. Then tried with show all symbols enabled, still nothing.

----------

## 1clue

 *szatox wrote:*   

>  *Quote:*   cannot get (...) functioning might distro hop You wouldn't believe the size of fck I don't give.
> 
> 

 

+1.

I actively use several distros already, based on what my needs for the system are and how I'm feeling that day. I strongly recommend being at least passingly familiar with 2 distros which are not in the same family group.

However, your "might distro hop" in the subject is likely to get you some angst as it can be seen as a threat of sorts, although I can't see why anyone would care. 

I bid you a good journey on your search for a new distro.

----------

## NeddySeagoon

The_Document,

Lets do a worked example. In menuconfig press / and enter PINCTRL_SUNRISEPOINT

I get

```
  │ Symbol: PINCTRL_SUNRISEPOINT [=n]                                                  │  

  │ Type  : tristate                                                                   │  

  │ Prompt: Intel Sunrisepoint pinctrl and GPIO driver                                 │  

  │   Location:                                                                        │  

  │     -> Device Drivers                                                              │  

  │ (1)   -> Pin controllers (PINCTRL [=n])                                            │  

  │   Defined at drivers/pinctrl/intel/Kconfig:101                                     │  

  │   Depends on: PINCTRL [=n] && (X86 [=y] || COMPILE_TEST [=n]) && ACPI [=y]         │  

  │   Selects: PINCTRL_INTEL [=n]
```

Pressing 1 to go to it takes me to 

```
[ ] Pin controllers  ----
```

As  Depends on: PINCTRL [=n] && (X86 [=y] || COMPILE_TEST [=n]) && ACPI [=y]  is false, something like that is expected.

Pressing z now appears to do nothing but further down the menu

```
  │ │           - - FSI support  ----                                                            │ │  

  │ │           - - Trusted Execution Environment support 
```

toggles into view.

Getting back to 

```
[*] Pin controllers  --->
```

select it and  

```
< >   Intel Sunrisepoint pinctrl and GPIO driver (NEW)
```

is the last useful option on the menu.

If the z toggle is on, you will see all the embedded system options too.

----------

## bobbymcgee

to avoid a guessing game, you can just do this on the bloated working kernel and you know what modules it needs in gentoo.

```
lspci -k
```

----------

## The_Document

 *NeddySeagoon wrote:*   

> ...Lets do a worked example. In menuconfig press / and enter PINCTRL_SUNRISEPOINT...

 

Thanks NeddySeagoon I now got my lsmod to look nearly identical as a distro which has drivers enabled for most hardware.

My lsmod

https://paste.pound-python.org/show/7lckADCDLXccVvQ7vZ6r/

My lspci -k

https://paste.pound-python.org/show/EAFQLK7EO2Tb1lXvTTk5/

Ubuntu lsmod

https://paste.pound-python.org/show/OKXtqeAQFYsve0Nu4hhq/

Ubuntu lspci -k

https://paste.pound-python.org/show/uzAG0QXwdvQ72knrlJUQ/

I am obviously very close as I dont want to use a binary distro. However I still dont understand why bluetooth and touchpad aren't working.  I really do not want to ditch gentoo as binary distros tend to have missing/incorrectly linked library issues, at least in my experience it was common. Im sure if I solve this I will not experience similar driver issues again because this issue is for multiple things.

----------

## bobbymcgee

your kernel looks fine to me. ubuntu is probably just using libinput these days? If you follow the wikis, I think it'll work. if not post your emerge --info and post Xorg.0.log

https://wiki.gentoo.org/wiki/Libinput

https://wiki.gentoo.org/wiki/Bluetooth

----------

## The_Document

 *bobbymcgee wrote:*   

> ...your kernel looks fine to me...

 

It might not even be the kernel and end up being userland issues. But its weird because touchpad remains inoperable after emerging appropriate xorg drivers after adding libinput into make.conf with emerge -uUD @world

current kernel

https://paste.pound-python.org/show/A4YLAaALURf9twtF9Fkq/

libinput list-devices - no tackpad found

https://paste.pound-python.org/show/EMUxOvkOYeqCJEmdWq9y/

emerge --info

https://paste.pound-python.org/show/PlxgoPvzK0jTkaRaNS0w/

Xorg.0.log

https://paste.pound-python.org/show/9DQFVG7gpYO7ZbgV7ITO/

```
[    37.058] (**) SiliconWin mouse: always reports core events

[    37.058] (**) Option "Device" "/dev/input/event14"

[    37.058] (**) Option "_source" "server/udev"

[    37.110] (II) event14 - SiliconWin mouse: is tagged by udev as: Mouse

[    37.110] (II) event14 - SiliconWin mouse: device is a pointer

[    37.110] (II) event14 - SiliconWin mouse: device removed

[    37.125] (**) Option "config_info" "udev:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:0000:3821.0001/input/input14/event14"

[    37.125] (II) XINPUT: Adding extended input device "SiliconWin mouse" (type: MOUSE, id 14)

[    37.125] (**) Option "AccelerationScheme" "none"

[    37.125] (**) SiliconWin mouse: (accel) selected scheme none/0

[    37.125] (**) SiliconWin mouse: (accel) acceleration factor: 2.000

[    37.125] (**) SiliconWin mouse: (accel) acceleration threshold: 4

[    37.177] (II) event14 - SiliconWin mouse: is tagged by udev as: Mouse

[    37.177] (II) event14 - SiliconWin mouse: device is a pointer

[    42.834] (II) event14 - SiliconWin mouse: Enabling spurious button debouncing, see https://wayland.freedesktop.org/libinput/doc/1.10.7/button_debouncing.html for details

 
```

is just a usb mouse which I use to get over lack of a working touchpad.

----------

## bobbymcgee

make note of this from the wiki:

 *Quote:*   

> By default, when libinput is the only available input driver for Xorg, no additional configuration is needed. Simply (re)start the graphical environment for the changes to take effect.
> 
> If multiple input drivers are available on the system (x11-drivers/xf86-input-evdev and x11-drivers/xf86-input-synaptics for example), then additional configuration is required. 

 

change to this in make.conf and emerge --depclean --ask

```
INPUT_DEVICES="libinput"
```

(this is default, so you can also remove entirely?)

----------

## NeddySeagoon

The_Document,

Sunrise Point is a pain.

Once you have PINCTRL_SUNRISEPOINT in your kernel, you can start to get things that depend on its GPIO to work. 

The good news is Sunrise Point is becoming more common and others have fixed this before you.

Non Gentoo solution apply. Its mostly a kernel thing.

I suspect you need  

```
hid                   114688  2 i2c_hid,hid_multitouch

hid_multitouch         20480  0

i2c_hid                20480  0
```

I have a dim memory that your touchpad is on the i2c. 

They are built into your kernel, so you have them.

This might be painful.

Boot Ubuntu, make sure things work as expected then remove modules until something breaks.

You will know you needed that module.

lsmod shows the module name, its size and a count of things that the kernel thinks are using the module. Its not always correct.

e.g. 

```
ahci                   36864  0
```

will be your HDD driver. Don't remove that.

Start with modules that have a used by count of zero.

----------

## The_Document

 *NeddySeagoon wrote:*   

> ...They are built into your kernel, so you have them....

 

So far I have managed to get touchpad to work, only bluetooth and fingerprint reader left. I am very happy and rather surprised that after recompiling kernel/rebooting/starting kde - the cursor started moving by touchpad, I was very glad. Im am sure bluetooth and fingerprint reader will follow inline.

lsmod so far

https://paste.pound-python.org/show/JdkMQmg5jsBDpXQy2bs5/

I dont understand why bluetooth isnt working granted I have all or at least most bluetooth modules loaded compared to ubuntu's lsmod

----------

## bobbymcgee

so you trying to use libinput libevdev and libsynaptics simulataneously with no configuration to do so had nothing to do with it? give me a break. go enjoy ubuntu.

----------

## The_Document

 *bobbymcgee wrote:*   

> so you trying to use libinput libevdev and libsynaptics simulataneously with no configuration to do so had nothing to do with it? give me a break. go enjoy ubuntu.

 

It was a driver issue not a userland issue.

----------

## bobbymcgee

this is wrong unless you know what you're doing, you obviously do not. keep going in circles, i'm finished.

```
INPUT_DEVICES="evdev synaptics libinput"
```

----------

## The_Document

 *bobbymcgee wrote:*   

> this is wrong unless you know what you're doing, you obviously do not. keep going in circles, i'm finished.
> 
> ```
> INPUT_DEVICES="evdev synaptics libinput"
> ```
> ...

 

I had that reduced to libinput a while ago.

----------

## bobbymcgee

you may lie but your Xorg.0.log does not  :Wink: 

----------

## The_Document

 *bobbymcgee wrote:*   

> you may lie but your Xorg.0.log does not 

 

Might as well post my recent xorg log to show only libinput is left

https://paste.pound-python.org/show/38Q3HQLiBAGqWPP4o4BW/

----------

## bobbymcgee

I don't need proof, I know I told you how to fix it and you did. I didn't have doubts. The problem is you spreading misinformation by attributing it to "recompiling...kde"

edit: forgot the ellipsis, it's nonsense either way.Last edited by bobbymcgee on Sun May 27, 2018 6:50 am; edited 1 time in total

----------

## The_Document

 *bobbymcgee wrote:*   

> I don't need proof, I know I told you how to fix it and you did. I didn't have doubts. The problem is you spreading misinformation by attributing it to "recompiling kde"

 

Were was it I stated I recompiled kde?

----------

## NeddySeagoon

The_Document,

Please pastebin your dmesg. Some bluetooth devices need firmware.

dmesg will tell.

----------

## The_Document

 *NeddySeagoon wrote:*   

> ...devices need firmware...

 

dmesg

https://paste.pound-python.org/show/PAgFDnFpI2womXpi9GXm/

it does appear several firmwares do fail to load - I always thought they are wifi related but now it seems they are bluetooth related

installed firmware packages

https://paste.pound-python.org/show/fAZjszOeZhp3VDrvAgIe/

I execute 

```
make firmware
```

 whenever I compile/install kernel but 

```
make firmware_install
```

 does nothing

I really appreciate your help.

----------

## NeddySeagoon

The_Document,

Bluetooth firmware loading worked.

```
[    3.304683] Bluetooth: hci0: Waiting for firmware download to complete

[    3.305672] Bluetooth: hci0: Firmware loaded in 1558778 usecs

[    3.305739] Bluetooth: hci0: Waiting for device to boot

[    3.317824] Bluetooth: hci0: Device booted in 11814 usecs

[    3.318088] Bluetooth: hci0: Found Intel DDC parameters: intel/ibt-12-16.ddc

[    3.319906] Bluetooth: hci0: Applying Intel DDC parameters completed
```

WiFi firmware loading worked too

```
[    1.732397] iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-8265-36.ucode failed with error -2

[    1.732409] iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-8265-35.ucode failed with error -2

[    1.733040] input: USB2.0 VGA UVC WebCam: USB2.0 V as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/input/input8

...

[    1.737978] iwlwifi 0000:02:00.0: loaded firmware version 34.0.1 op_mode iwlmvm
```

Those errors are harmless.  iwlwifi is looking for firmware that is not yet released.

Your touchpad is there too.

```
[    1.982055] input: ELAN1300:00 04F3:3057 as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-6/i2c-ELAN1300:00/0018:04F3:3057.0001/input/input10
```

 Notice its an i2c device.

```
[    0.013193] Spectre V2 : Vulnerable: Minimal generic ASM retpoline

[    0.013196] Spectre V2 : Spectre v2 mitigation: Filling RSB on context switch

[    0.013199] Speculative Store Bypass: Vulnerable
```

To fix Minimal generic ASM retpoline you need gcc-7.3 or newer.

```
[    0.320949] microcode: sig=0x806ea, pf=0x80, revision=0x66

[    0.321612] microcode: Microcode Update Driver: v2.2.
```

Do you need a microcode update?

The Microcode updated early line is missing here. It may be that revision=0x66 is the newest for your CPU or its something you nave not got round to yet.

The kernel option only provides the driver. The firmware file needs to be included in the kernel.

Other than the above and some junk in your kernel, it all looks OK.

----------

## The_Document

 *NeddySeagoon wrote:*   

> ...Do you need a microcode update?...

 

I do not want to use initramfs because Im on stub setup - can I include firmwares into kernel by typing them out into 

```

Devices Drivers --->

          Generic Driver Options --->

                    External firmware blobs to build into the kernel binary 
```

 or is there a way to have the kernel search out and load firmwares during boot from usersspace without typing the firmwares? Im assuming this is the applicable subject matter: https://wiki.gentoo.org/wiki/Intel_microcode

 *NeddySeagoon wrote:*   

> ..junk in your kernel...

 

The junk was result from debugging effort, I might hunt the junk down after hardware driver resolution. Agian, thank you for your help.

----------

## NeddySeagoon

The_Document,

You can build the initrd into the kernel but maybe that's something to do later.

----------

## The_Document

Bluetooth now works because I didn't start the service and also didn't add user to appropriate group, now to figure out fingerprint reader.

----------

