Soluções para Problemas de Hardware no HP Elite Dragonfly Chromebook com Linux

Status dos Componentes

Símbolo Significado
Sem problemas ou defeitos que não afetem o uso
⚠️ Problemas menores que afetam o uso
Problemas graves ou completamente inutilizável

Leitor de Impressões Digitais ✅

Após aplicar um patch na biblioteca libfprint, o leitor funciona corretamente. Para adicionar impressões digitais e configurar regras PAM, consulte a documentação do libfprint.

Um pacote AUR está disponível: libfprint-crfpmoc-git.

Câmera IPU6 ✅

A câmera pode ser detectada com o comando a seguir. Se aparecer na lista, geralmente está funcional.

$ detectar_cams 2>/dev/null
Câmeras disponíveis:
1: 'sensor_ov556' (\_SB_.PCI0.I2C1.CAM1)

Embora a libcamera possa acessá-la, programas que dependem do V4L2 tradicional podem falhar, pois o IPU6 não fornece um dispositivo /dev/video0 convencional. Em vez disso, expõe múltiplos nós iuntilizáveis.

$ v4l2-ctl --list-devices
ipu6 (PCI:0000:00:06.0):
	/dev/video0
	/dev/video1
	/dev/video2
... outros dispositivos V4L2 listados

Para resolver, instale o pacote pipewire-libcamera. Isso permite o uso da câmera via PipeWire.

$ pw-cli ls Device | grep "device.api" -A2
 		device.api = "alsa"
 		device.description = "Controlador de Áudio HD Alder Lake PCH-P"
 		device.name = "alsa_card.pci-0000_00_1f.3-platform-rt5682_custom"
--
 		device.api = "v4l2"
 		device.description = "ipu6"
 		device.name = "v4l2_device.pci-0000_00_06.0"
--
 		device.api = "v4l2"
 		device.description = "ipu6"
 		device.name = "v4l2_device.pci-0000_00_06.0.2"
... outros dispositivos V4L2

O PipeWire inclui a ferramenta pw-v4l2 para compatibilidade com V4L2. Use-a para criar um dispositivo virtual funcional.

$ pw-v4l2 v4l2-ctl --list-devices
ipu6 (PCI:0000:00:06.0):
	/dev/media0

ov556 (platform:PipeWire-222):
	/dev/video0

Para evitar chamar pw-v4l2 explicitamente, defina uma variável de ambiente.

$ LD_PRELOAD=/usr/lib/pipewire-0.3/v4l2/libpw-v4l2.so v4l2-ctl --list-devices
ipu6 (PCI:0000:00:06.0):
	/dev/media0

ov556 (platform:PipeWire-222):
	/dev/video0

Dica Útil

Para ocultar os dispositivos V4L2 indesejados do PipeWire, crie o arquivo de configuração abaixo.

~/.config/wireplumber/wireplumber.conf.d/99-desativar-v4l2.conf

wireplumber.profiles = {
  main = {
    monitor.v4l2 = disabled      # Desativa completamente o monitor V4L2
  }
}

Reinicie os serviços após a alteração.

$ systemctl --user restart pipewire.service wireplumber.service

$ pw-cli ls Device
	id 50, type PipeWire:Interface:Device/3
 		object.serial = "50"
 		factory.id = "18"
 		client.id = "45"
 		device.api = "alsa"
 		device.description = "Controlador de Áudio HD Alder Lake PCH-P"
 		device.name = "alsa_card.pci-0000_00_1f.3-platform-rt5682_custom"
 		device.nick = "codec-rt5682"
 		media.class = "Audio/Device"
	id 70, type PipeWire:Interface:Device/3
 		object.serial = "70"
 		factory.id = "18"
 		client.id = "45"
 		device.api = "libcamera"
 		device.description = "Dispositivo desconhecido"
 		device.name = "libcamera_device.1"
 		media.class = "Video/Device"

Problemas Potenciais

Ao visualizar com ffplay, a cor parece normal. No entanto, ao usar a libcamera diretamente, pode haver distorção de cores. Isso ocorre mesmo com a cadeia de processamento libcamera → PipeWire → v4l2. É um defeito menor que não impacta significativamente a experiência.

Áudio ⚠️

Siga as instruções do projeto chromebook-linux-audio para configuração, mas existem ressalvas.

Problemas Potenciais

Após pausar a reprodução, o PipeWire entra em modo de suspensão após 5 segundos para economizar energia. Durante esse processo, um estalo audível pode ocorrer devido a um problema não identificado.

Para mitigar, configure o tempo de suspensão para que o estalo ocorra imediatamente após a pausa.

~/.config/wireplumber/wireplumber.conf.d/99-alsa-suspensao.conf

monitor.alsa.rules = [
    {
        matches = [
            {
                ## Corresponde a todos os sinks.
                node.name = "~alsa_output.*"
            }
        ]
        actions = {
            update-props = {
                ## 0 desativa a suspensão
                session.suspend-timeout-seconds = 0.1
            }
        }
    }
]

Tela de Privacidade HP ❌

O kernel Linux suporta a camada baixa desse recurso, como visto no módulo drivers/platform/chrome/chromeos_privacy_screen.c.

$ ls /sys/module/chromeos_privacy_screen/
coresize  drivers/  holders/  initsize  initstate  notes/  refcnt  sections/  srcversion  taint  uevent

$ ls /sys/class/drm/privacy_screen-GOOG0015:00/
device@  hw_state  power/  subsystem@  sw_state  uevent

$ journalctl -b -k | grep -i "GOOG0015"
Mar 04 14:25:39 cachyos kernel: Found 'privacy_screen-GOOG0015:00' privacy-screen provider
Mar 04 14:25:40 cachyos kernel: chromeos_privacy_screen_driver GOOG0015:00: registered privacy-screen 'privacy_screen-GOOG0015:00'

Atualmente, não há método conhecido para ativar ou controlar a tela de privacidade no Linux. A tecla dedicada também não é funcional e não pode ser remapeaad.

Teclas de Função do ChromeOS ❌

Os botões e switches do EC podem ser verificados com ferramentas como ectool.

$ sudo ectool mkbpget buttons
MKBP buttons state: 0x0000 (supported: 0x0007)
Power: OFF
Volume up: OFF
Volume down: OFF

$ sudo ectool mkbpget switchs
MKBP switches state: 0x0001 (supported: 0x0003)
Lid open: ON
Tablet mode: OFF

O driver do kernel drivers/input/keyboard/cros_ec_keyb.c suporta essas teclas, mas os eventos não chegam ao sistema de input.

$ evtest /dev/input/event6
Input driver version is 1.0.1
Input device ID: bus 0x6 vendor 0x0 product 0x0 version 0x1
Input device name: "cros_ec_buttons"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
  Event type 5 (EV_SW)
    Event code 0 (SW_LID) state 0
    Event code 1 (SW_TABLET_MODE) state 0

O log do EC mostra que as teclas são pressionadas, mas a interrupção não é acionada no AP. A contagem de interrupções permanece estática.

$ cat /proc/interrupts | grep chromeos-ec
102:  20  IR-IO-APIC  102-fasteoi  chromeos-ec

As teclas funcionam no Windows, sugerindo um problema no kernel Linux.

Combinações de Teclas Individuais ❌

Algumas combinações específicas, como meta-ctrl-5 e meta-ctrl-6, não são registradas. Outras, como meta-ctrl-4, funcionam. O problema persiste no Windows, indicando uma limitação de hardware.

Hibernação e Suspensão (S3, S0ix) ⚠️

A suspensão do sistema, com ou sem tampa fechada, é completamente inutilizável. Soluções existentes são instáveis.

Recarregar módulos do kernel frequentemente causa pânico. O comando ectool hostsleepstate freeze pode funcionar, mas apresenta risco de reinicialização. Discussões detalhadas estão disponíveis no chrultrabook forum e GitHub.

Atulaização de 10 de Março

Novas informações sobre o problema podem ser encontradas no tema cros_ec_timeout.

Touchpad Falha ⚠️

O touchpad de pressão total pode falhar intermitentemente, geralmente após tentativas de suspensão. A causa exata é desconhecida.

Solução Temporária

Parar o serviço keyd antes de recarregar o driver evita travamentos.

systemctl stop keyd.service
modprobe -r hid_multitouch
modprobe hid_multitouch

Perda de Retroiluminação do Teclado ⚠️

A retroiluminação pode desaparecer aleatoriamente. Reiniciar o sistema ou o EC pode resolver.

$ ectool reboot_ec cold at-shutdown

O fenômeno é raro e difícil de reproduzir, exigindo mais investigação.

Tags: Linux ChromeOS HP Elite Dragonfly IPU6 libfprint

Publicado em 6-7 07:30 por Thomas