Ativar exibição externa no console do FreeBSD

17

tl; dr, gostaria de usar a tela externa com o FreeBSD 10.0 em um HP Pavilion g7-2270us. Não me importo se é espelhado ou tenho que selecionar um ou outro.

Aqui estão os sintomas:

  • Quando um monitor é conectado à porta externa do monitor VGA, o monitor conectado e o monitor externo ficam ativos nas telas do BIOS.
  • Depois que o FreeBSD começa a inicializar, o monitor VGA externo não está mais ativo.
  • Uma vez inicializado, o fnF4pressionamento de tecla esperado para alternar a exibição padrão não tem efeito (nem ocorre F4sozinho), independentemente do estado das "Chaves de Ação" no BIOS, ou seja, se é necessário ou não usar o modificador.

Outras notas:

  • Não há opções no BIOS que sejam relevantes para essa situação.
  • Nenhum servidor gráfico instalado, então X / Wayland / etc. não tem relevância para esta questão (por exemplo xrandr).
  • Os gráficos integrados do Intel Core i3-3110M parecem ser suportados nas versões ≤ 9.1.

grepping em torno de pciconfeu encontrar:

vgapci0@pci0:0:2:0:     class=0x030000 card=0x1843103c chip=0x01668086 rev=0x09 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '3rd Gen Core processor Graphics Controller'
    class      = display
    subclass   = VGA
    bar   [10] = type Memory, range 64, base 0x52000000, size 4194304, enabled
    bar   [18] = type Prefetchable Memory, range 64, base 0x80000000, size 268435456, enabled
    bar   [20] = type I/O Port, range 32, base 0x4000, size 64, enabled
    cap 05[90] = MSI supports 1 message 
    cap 01[d0] = powerspec 2  supports D0 D3  current D0
    cap 13[a4] = PCI Advanced Features: FLR TP

e aqui estão algumas coisas mais úteis de dmesg:

vgapci0: <VGA-compatible display> port 0x4000-0x403f mem 0x52000000-0x523fffff irq 16 at device 2.0 on pci0
agp0: <IvyBridge mobile GT2 IG> on vgapci0
agp0: aperture size is 256M, detected 65532k stolen memory
vgapci0: Boot video device
pci0: <simple comms> at device 22.0 (no driver attached)
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0

Obviamente vgapci0é a tela anexada. Parece que esse vga0é o culpado que estamos tentando fazer funcionar. Está no isa0barramento que está sendo atendido pela isab0ponte ISA-PCI conectada pci0. De fato, procurando por aí devinfo, encontramos:

        isab0 pnpinfo vendor=0x8086 device=0x1e59 subvendor=0x103c subdevice=0x1843 class=0x060100 at slot=31 function=0 handle=\_SB_.PCI0.LPCB
          isa0
            sc0
            vga0
                I/O ports:
                    0x3c0-0x3df
                I/O memory addresses:
                    0xa0000-0xbffff

o que é consistente com o exposto acima dmesg. Este dispositivo é descrito pciconfcomo tal:

isab0@pci0:0:31:0:      class=0x060100 card=0x1843103c chip=0x1e598086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'HM76 Express Chipset LPC Controller'
    class      = bridge
    subclass   = PCI-ISA
    cap 09[e0] = vendor (length 12) Intel cap 1 version 0
                 features: AMT, 4 PCI-e x1 slots

dmidecode lista o conector da porta física em questão:

Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
        Internal Reference Designator: CN5001
        Internal Connector Type: None
        External Reference Designator: CRT
        External Connector Type: DB-15 female
        Port Type: Video Port

e os gráficos 0x0166 padrão:

Handle 0x001D, DMI type 41, 11 bytes
Onboard Device
        Reference Designation: Intel(R) Graphics 4000
        Type: Video
        Status: Enabled
        Type Instance: 1
        Bus Address: 0000:00:02.0

mas nada sobre a ponte PCI-ISA. Então, talvez como David King sugere, o problema é que não há nenhum driver sendo carregado para o dispositivo ISA VGA. Isso explica por que não o vemos como uma noneentrada na pciconflista - não é um dispositivo PCI. O que eu não sei é como obter mais informações sobre este dispositivo para descobrir qual driver usar, se esse é o problema em questão.

wxl
fonte
4
Parece que ele está deixando o monitor externo quando alterna de drivers genéricos para drivers específicos de placas. Meu palpite é que você precisará encontrar e instalar os drivers da placa de vídeo que está executando a interface VGA externa. A partir do seu dmesglog, parece que o dispositivo em questão é o vga0: <Generic ISA VGA>...começo para procurar lá
David King

Respostas:

1

Olhando para esse problema, você menciona o seguinte:

Quando um monitor é conectado à porta externa do monitor VGA, o monitor conectado e o monitor externo ficam ativos nas telas do BIOS. Depois que o FreeBSD começa a inicializar, o monitor VGA externo não está mais ativo.

Isso basicamente significa que você precisa editar o seu /boot/loader.conf.

Eu tentaria algo como o seguinte em /boot/loader.conf:

i915kms_load="YES" 
kern.vt.fb.default_mode="1024x768"

Supondo que "1024x768" é a resolução que você procura.

Fontes: fóruns do freebsd.org , algum blog aleatório - eu não era 100% do nome / ortografia do módulo , e página de manual do FreeBSD vt

Ahhh, as teclas Fn não estão funcionando, quase esqueci aquela ... você geralmente não pode detectar pressionamentos de tecla Fn, no entanto, o teclado as interpreta e as usa como modificador de tecla. Então, quando você pressiona, digamos Fn+F4, o FreeBSD não receberá Fnnem os F5principais eventos, mas outro, aquele para ativar / desativar a tela externa, que depende do tipo de teclado usado. Infelizmente, FreeBSD não tem o driver apropriado carregado para o teclado, para que você teria que encontrar o módulo adequada e carregá-lo da mesma forma como acima <mod>_load="TRUE"no /boot/loader.conf. No entanto, não tenho informações suficientes no teclado para poder ajudar mais.

thecarpy
fonte