FreeBSD 10.1 聲音不工作
我是 BSD 新手,我正在嘗試從備份箱中取出一台舊的(ish)Packard Bell 台式機。用於 amd64 的 FreeBSD 10.1-RELEASE 的基本安裝似乎進展順利,但我一直試圖讓音效卡工作。
該硬體基於搭載 Intel P4 處理器的 Gigabyte 主機板,具有使用 Intel High Definition Audio 晶片組的集成音頻。在 Linux 下,選擇的音頻驅動程序是
snd_hda_intel
,而在 FreeBSD 下,期望snd_hda
模組將驅動音頻。安裝 FreeBSD 後,聲音無法正常工作,但我遵循了許多地方的線上說明,
kldload
用於試驗不同的驅動程序。我發現amd64 GENERIC核心已經有sound
並且預裝了很多聲音驅動,所以用kldload
錯了地方。但是,文件中沒有安裝任何驅動程序的記錄/dev/sndstat
,並試圖通過鍵入cat /random > /dev/dsp
返回錯誤消息來製造噪音,說該操作是不允許的。我想知道的是,我是在浪費精力讓老化的音效卡工作,還是我錯過了一些技巧?
更多的資訊:
此部分是根據貢獻者對答案的建議添加的。
的輸出
pciconf -lv
具有音頻控制器的以下條目:hdac0@pci0:0:27:0: class=0x040300 card=0xe0111631 chip=0x26688086 rev=0x03 hdr=0x00 vendor = 'Intel Corporation' device = '82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller' class = multimedia subclass = HDA
的輸出
dmesg
如下:Copyright (c) 1992-2014 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512 VT: running with driver "vga". module_register: module at91_mci/mmc already exists! Module at91_mci/mmc failed to register: 17 module_register: module sdhci_bcm/mmc already exists! Module sdhci_bcm/mmc failed to register: 17 module_register: module sdhci_fdt/mmc already exists! Module sdhci_fdt/mmc failed to register: 17 module_register: module sdhci_imx/mmc already exists! Module sdhci_imx/mmc failed to register: 17 module_register: module sdhci_pci/mmc already exists! Module sdhci_pci/mmc failed to register: 17 module_register: module sdhci_ti/mmc already exists! Module sdhci_ti/mmc failed to register: 17 module_register: module ti_mmchs/mmc already exists! Module ti_mmchs/mmc failed to register: 17 module_register: module mmc/mmcsd already exists! Module mmc/mmcsd failed to register: 17 CPU: Intel(R) Pentium(R) 4 CPU 3.06GHz (3059.06-MHz K8-class CPU) Origin = "GenuineIntel" Id = 0xf41 Family = 0xf Model = 0x4 Stepping = 1 Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> Features2=0x651d<SSE3,DTES64,MON,DS_CPL,TM2,CNXT-ID,CX16,xTPR> AMD Features=0x20100800<SYSCALL,NX,LM> TSC: P-state invariant real memory = 3221225472 (3072 MB) avail memory = 3090366464 (2947 MB) Event timer "LAPIC" quality 400 ACPI APIC Table: <GBT AWRDACPI> ioapic0 <Version 2.0> irqs 0-23 on motherboard random: <Software, Yarrow> initialized module_register_init: MOD_LOAD (vesa, 0xffffffff80d942e0, 0) error 19 kbd1 at kbdmux0 acpi0: <GBT AWRDACPI> on motherboard acpi0: Power Button (fixed) acpi0: reservation of 0, a0000 (3) failed acpi0: reservation of 100000, bfef0000 (3) failed cpu0: <ACPI CPU> on acpi0 attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0 Timecounter "i8254" frequency 1193182 Hz quality 0 Event timer "i8254" frequency 1193182 Hz quality 100 atrtc0: <AT realtime clock> port 0x70-0x73 irq 8 on acpi0 Event timer "RTC" frequency 32768 Hz quality 0 acpi_button0: <Power Button> on acpi0 pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0 pci0: <ACPI PCI bus> on pcib0 pcib1: <PCI-PCI bridge> irq 16 at device 1.0 on pci0 pci1: <PCI bus> on pcib1 vgapci0: <VGA-compatible display> port 0x9000-0x90ff mem 0xe0000000-0xe3ffffff,0xe5000000-0xe500ffff irq 16 at device 0.0 on pci1 vgapci0: Boot video device vgapci1: <VGA-compatible display> mem 0xe5010000-0xe501ffff at device 0.1 on pci1 hdac0: <Intel 82801F HDA Controller> mem 0xe6100000-0xe6103fff irq 16 at device 27.0 on pci0 uhci0: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-A> port 0xbc00-0xbc1f irq 23 at device 29.0 on pci0 usbus0 on uhci0 uhci1: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-B> port 0xb000-0xb01f irq 19 at device 29.1 on pci0 usbus1 on uhci1 uhci2: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-C> port 0xb400-0xb41f irq 18 at device 29.2 on pci0 usbus2 on uhci2 uhci3: <Intel 82801FB/FR/FW/FRW (ICH6) USB controller USB-D> port 0xb800-0xb81f irq 16 at device 29.3 on pci0 usbus3 on uhci3 ehci0: <Intel 82801FB (ICH6) USB 2.0 controller> mem 0xe6104000-0xe61043ff irq 23 at device 29.7 on pci0 usbus4: EHCI version 1.0 usbus4 on ehci0 pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0 pci2: <ACPI PCI bus> on pcib2 ath0: <Atheros 9220> mem 0xe6000000-0xe600ffff irq 20 at device 0.0 on pci2 ath0: [HT] enabling HT modes ath0: [HT] 1 stream STBC receive enabled ath0: [HT] 1 stream STBC transmit enabled ath0: [HT] 2 RX streams; 2 TX streams ath0: AR9220 mac 128.2 RF5133 phy 13.0 ath0: 2GHz radio: 0x0000; 5GHz radio: 0x00c0 pci2: <simple comms, generic modem> at device 1.0 (no driver attached) rl0: <RealTek 8139 10/100BaseTX> port 0xa400-0xa4ff mem 0xe6014000-0xe60140ff irq 21 at device 5.0 on pci2 miibus0: <MII bus> on rl0 rlphy0: <RealTek internal media interface> PHY 0 on miibus0 rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto rl0: Ethernet address: 00:14:85:40:4d:00 pci2: <serial bus, FireWire> at device 7.0 (no driver attached) isab0: <PCI-ISA bridge> at device 31.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <Intel ICH6 SATA150 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xf000-0xf00f at device 31.2 on pci0 ata0: <ATA channel> at channel 0 on atapci0 ata1: <ATA channel> at channel 1 on atapci0 uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0 ppc0: <Parallel port> port 0x378-0x37f,0x778-0x77b irq 7 drq 3 on acpi0 ppc0: Generic chipset (ECP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/16 bytes threshold ppbus0: <Parallel port bus> on ppc0 lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port ppi0: <Parallel I/O> on ppbus0 atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0 atkbd0: <AT Keyboard> irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] orm0: <ISA Option ROMs> at iomem 0xc0000-0xcbfff,0xcc000-0xd3fff,0xd4000-0xd4fff on isa0 p4tcc0: <CPU Frequency Thermal Control> on cpu0 random: unblocking device. usbus0: 12Mbps Full Speed USB v1.0 fuse-freebsd: version 0.4.4, FUSE ABI 7.8 Timecounters tick every 1.000 msec hdacc0: <Realtek ALC880 HDA CODEC> at cad 2 on hdac0 hdaa0: <Realtek ALC880 Audio Function Group> at nid 1 on hdacc0 usbus1: 12Mbps Full Speed USB v1.0 usbus2: 12Mbps Full Speed USB v1.0 usbus3: 12Mbps Full Speed USB v1.0 ugen0.1: <Intel> at usbus0 uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0 ugen1.1: <Intel> at usbus1 uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1 ugen2.1: <Intel> at usbus2 uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2 ugen3.1: <Intel> at usbus3 uhub3: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus3 usbus4: 480Mbps High Speed USB v2.0 ugen4.1: <Intel> at usbus4 uhub4: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus4 uhub0: 2 ports with 2 removable, self powered uhub1: 2 ports with 2 removable, self powered uhub2: 2 ports with 2 removable, self powered uhub3: 2 ports with 2 removable, self powered ada0 at ata0 bus 0 scbus0 target 0 lun 0 ada0: <ST3200826AS 3.03> ATA-7 SATA 1.x device ada0: Serial Number 5ND1T70S ada0: 150.000MB/s transfers (SATA, UDMA5, PIO 8192bytes) ada0: 190782MB (390721968 512 byte sectors: 16H 63S/T 16383C) ada0: Previously was known as ad0 cd0 at ata1 bus 0 scbus1 target 0 lun 0 cd0: <HL-DT-ST DVD-ROM GDR8163B 0N21> Removable CD-ROM SCSI-0 device cd0: 66.700MB/s transfers (UDMA4, ATAPI 12bytes, PIO 65534bytes) cd0: Attempt to query device size failed: NOT READY, Medium not present cd1 at ata1 bus 0 scbus1 target 1 lun 0 cd1: <PHILIPS DVDR1628P1 Q2.4> Removable CD-ROM SCSI-0 device cd1: Serial Number V7121S52961724 cd1: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes) cd1: Attempt to query device size failed: NOT READY, Medium not present Timecounter "TSC-low" frequency 1529530837 Hz quality 1000 Root mount waiting for: usbus4 Root mount waiting for: usbus4 Root mount waiting for: usbus4 uhub4: 8 ports with 8 removable, self powered Root mount waiting for: usbus4 Trying to mount root from ufs:/dev/ada0p2 [rw]... ugen0.2: <vendor 0x058f> at usbus0 umass0: <vendor 0x058f USB Reader, class 0/0, rev 1.10/1.00, addr 2> on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x4001 umass0:2:0:-1: Attached to scbus2 da0 at umass-sim0 bus 0 scbus2 target 0 lun 0 da0: <Generic USB SD Reader 1.00> Removable Direct Access SCSI-0 device da0: Serial Number 2004888 da0: 1.000MB/s transfers da0: Attempt to query device size failed: NOT READY, Medium not present da0: quirks=0x2<NO_6_BYTE> da1 at umass-sim0 bus 0 scbus2 target 0 lun 1 da1: <Generic USB CF Reader 1.01> Removable Direct Access SCSI-0 device da1: Serial Number 2004888 da1: 1.000MB/s transfers da1: Attempt to query device size failed: NOT READY, Medium not present da1: quirks=0x2<NO_6_BYTE> da2 at umass-sim0 bus 0 scbus2 target 0 lun 2 da2: <Generic USB SM Reader 1.02> Removable Direct Access SCSI-0 device da2: Serial Number 2004888 da2: 1.000MB/s transfers da2: Attempt to query device size failed: NOT READY, Medium not present da2: quirks=0x2<NO_6_BYTE> da3 at umass-sim0 bus 0 scbus2 target 0 lun 3 da3: <Generic USB MS Reader 1.03> Removable Direct Access SCSI-0 device da3: Serial Number 2004888 da3: 1.000MB/s transfers da3: Attempt to query device size failed: NOT READY, Medium not present da3: quirks=0x2<NO_6_BYTE> ugen3.2: <Logitech> at usbus3 wlan0: Ethernet address: 00:24:01:ee:97:ea ums0: <Logitech USB-PS2 Optical Mouse, class 0/0, rev 2.00/11.10, addr 2> on usbus3 ums0: 3 buttons and [XYZ] coordinates ID=0 WARNING: attempt to domain_add(bluetooth) after domainfinalize()
據我從主機板上的象形文字可以看出,主機板是
Gigabyte GA-81915PM
. 我希望這對某人比對我更有意義!
假設
snd_hda
正在載入驅動程序(它是),沒有工作聲音表明驅動程序衝突或錯誤的預設配置。為了解決這個問題,我添加了以下行以/boot/loader.conf
打開詳細消息dmesg
:boot_verbose="YES"
這樣做會使
dmesg
輸出更加有用,包含各種附加資訊(請參閱此連結,事實證明這是必不可少的閱讀材料)。從中提取有用的東西
dmesg
給了我這樣的東西:hdac0: <Intel 82801F HDA Controller> mem 0xe6100000-0xe6103fff irq 16 at device 27.0 on pci0 hdac0: PCI card vendor: 0x1631, device: 0xe011 hdac0: HDA Driver Revision: 20120126_0002 hdac0: Config options: on=0x00000000 off=0x00000000 hdac0: attempting to allocate 1 MSI vectors (1 supported) hdac0: using IRQ 256 for MSI hdac0: Caps: OSS 4, ISS 4, BSS 0, NSDO 1, 64bit, CORB 256, RIRB 256 hdacc0: <Realtek ALC880 HDA CODEC> at cad 2 on hdac0 hdaa0: <Realtek ALC880 Audio Function Group> at nid 1 on hdacc0 hdaa0: Subsystem ID: 0x08800000 hdaa0: NumGPIO=2 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1 hdaa0: GPIO0: disabled hdaa0: GPIO1: disabled hdaa0: Original pins configuration: hdaa0: nid 0x as seq device conn jack loc color misc hdaa0: 20 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 21 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 22 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 23 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 24 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 25 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 26 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 27 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 28 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 29 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 30 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 31 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: Patching widget caps nid=29 0x00400000 -> 0x00700000 hdaa0: Patched pins configuration: hdaa0: nid 0x as seq device conn jack loc color misc hdaa0: 20 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 21 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 22 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 23 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 24 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 25 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 26 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 27 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 28 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 30 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 31 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: Tracing input monitor hdaa0: Tracing other input monitors hdaa0: Tracing beeper hdaa0: FG config/quirks: forcestereo ivref50 ivref80 ivref100 ivref
音頻設備的所有引腳都被分配了預設值,使它們被禁用,因此沒有配置任何設備。
要將預設值更改為合理的值,需要對引導時配置進行修改,這是通過在
/boot/device.hints
. 這裡似乎有很大的靈活性,但我嘗試了以下方法,這足以讓音頻輸出立即工作:hint.hdaa.0.nid20.config="as=1 seq=0 device=Speaker conn=Fixed loc=Onboard color=Unknown" hint.hdaa.0.nid21.config="as=2 seq=0 device=Line-out conn=Jack loc=Rear color=Green" hint.hdaa.0.nid27.config="as=2 seq=15 device=Headphones conn=Jack loc=Front color=Green"
現在檢查
dmesg
產生:hdac0: <Intel 82801F HDA Controller> mem 0xe6100000-0xe6103fff irq 16 at device 27.0 on pci0 hdac0: PCI card vendor: 0x1631, device: 0xe011 hdac0: HDA Driver Revision: 20120126_0002 hdac0: Config options: on=0x00000000 off=0x00000000 hdac0: attempting to allocate 1 MSI vectors (1 supported) hdac0: using IRQ 256 for MSI hdac0: Caps: OSS 4, ISS 4, BSS 0, NSDO 1, 64bit, CORB 256, RIRB 256 hdacc0: <Realtek ALC880 HDA CODEC> at cad 2 on hdac0 hdaa0: <Realtek ALC880 Audio Function Group> at nid 1 on hdacc0 hdaa0: Subsystem ID: 0x08800000 hdaa0: NumGPIO=2 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1 hdaa0: GPIO0: disabled hdaa0: GPIO1: disabled hdaa0: Original pins configuration: hdaa0: nid 0x as seq device conn jack loc color misc hdaa0: 20 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 21 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 22 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 23 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 24 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 25 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 26 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 27 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 28 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 29 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 30 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: 31 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 hdaa0: Patching widget caps nid=29 0x00400000 -> 0x00700000 hdaa0: Patching pin config nid=20 0x00000000 -> 0x99100010 hdaa0: Patching pin config nid=21 0x00000000 -> 0x01004020 hdaa0: Patching pin config nid=27 0x00000000 -> 0x0220402f hdaa0: Patched pins configuration: hdaa0: nid 0x as seq device conn jack loc color misc hdaa0: 20 99100010 1 0 Speaker Fixed Unknown Onboard Unknown 0 hdaa0: 21 01004020 2 0 Line-out Jack Unknown Rear Green 0 hdaa0: 22 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 23 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 24 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 25 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 26 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 27 0220402f 2 15 Headphones Jack Unknown Front Green 0 hdaa0: 28 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 30 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 31 00000000 0 0 Line-out Jack Unknown 0x00 Unknown 0 DISA hdaa0: 2 associations found: hdaa0: Association 0 (1) out: hdaa0: Pin nid=20 seq=0 hdaa0: Association 1 (2) out: hdaa0: Pin nid=21 seq=0 hdaa0: Pin nid=27 seq=15 hdaa0: Tracing association 0 (1) hdaa0: Pin 20 traced to DAC 2 hdaa0: Association 0 (1) trace succeeded hdaa0: Tracing association 1 (2) hdaa0: Pin 21 traced to DAC 3 hdaa0: Pin 27 traced to DAC 3 and hpredir 0 hdaa0: Association 1 (2) trace succeeded hdaa0: Looking for additional DAC for association 0 (1) hdaa0: Looking for additional DAC for association 1 (2) hdaa0: Tracing input monitor hdaa0: Tracing other input monitors hdaa0: Tracing beeper hdaa0: nid 29 traced to out hdaa0: Pin sense: nid=20 sense=0xffffffff (connected) hdaa0: Headphones redirection for association 1 nid=27 using unsolicited responses. hdaa0: Redirect output to: main hdaa0: FG config/quirks: forcestereo ivref50 ivref80 ivref100 ivref pcm0: <Realtek ALC880 (Onboard Analog Speaker)> at nid 20 on hdaa0 pcm1: <Realtek ALC880 (Analog 2.0+HP)> at nid 21,27 on hdaa0
顯示重新配置的引腳允許創建兩個音頻輸出設備,
pcm0
並且pcm1
。/dev/sndstat
確認的內容:Installed devices: pcm0: <Realtek ALC880 (Onboard Analog Speaker)> (play) default pcm1: <Realtek ALC880 (Analog 2.0+HP)> (play)
讓麥克風工作留給讀者作為練習!