1 ============================= 2 More Notes on HD-Audio Driver 3 ============================= 4 5 Takashi Iwai <tiwai@suse.de> 6 7 8 General 9 ======= 10 11 HD-audio is the new standard on-board audio co 12 after AC97. Although Linux has been supportin 13 time ago, there are often problems with new ma 14 problem is broken BIOS, and the rest is the dr 15 This document explains the brief trouble-shoot 16 methods for the HD-audio hardware. 17 18 The HD-audio component consists of two parts: 19 the codec chips on the HD-audio bus. Linux pr 20 for all controllers, snd-hda-intel. Although 21 a word of a well-known hardware vendor, it's n 22 all controller chips by other companies. Sinc 23 controllers are supposed to be compatible, the 24 should work in most cases. But, not surprisin 25 bugs and issues specific to each controller ty 26 driver has a bunch of workarounds for these as 27 28 A controller may have multiple codecs. Usuall 29 codec and optionally one modem codec. In theo 30 multiple audio codecs, e.g. for analog and dig 31 driver might not work properly because of conf 32 This should be fixed in future if such hardwar 33 34 The snd-hda-intel driver has several different 35 on the codec. It has a generic parser as a fa 36 functionality is fairly limited until now. In 37 parser, usually the codec-specific parser (cod 38 for the codec-specific implementations. The d 39 codec-specific problems are explained in the l 40 41 If you are interested in the deep debugging of 42 HD-audio specification at first. The specific 43 Intel's web page, for example: 44 45 * https://www.intel.com/standards/hdaudio/ 46 47 48 HD-Audio Controller 49 =================== 50 51 DMA-Position Problem 52 -------------------- 53 The most common problem of the controller is t 54 pointer reporting. The DMA pointer for playba 55 read in two ways, either via a LPIB register o 56 map. As default the driver tries to read from 57 position-buffer, and falls back to LPIB if the 58 dead. However, this detection isn't perfect o 59 a case, you can change the default method via 60 61 ``position_fix=1`` means to use LPIB method ex 62 ``position_fix=2`` means to use the position-b 63 ``position_fix=3`` means to use a combination 64 for some VIA controllers. The capture stream 65 by comparing both LPIB and position-buffer val 66 ``position_fix=4`` is another combination avai 67 and uses LPIB for the playback and the positio 68 streams. 69 ``position_fix=5`` is specific to Intel platfo 70 and onward. It applies the delay calculation 71 reporting. 72 ``position_fix=6`` is to correct the position 73 size, mainly targeted for the recent AMD contr 74 0 is the default value for all other 75 controllers, the automatic check and fallback 76 the above. If you get a problem of repeated s 77 help. 78 79 In addition to that, every controller is known 80 the wake-up timing. It wakes up a few samples 81 processing the data on the buffer. This cause 82 example, with ALSA dmix or JACK. Since 2.6.27 83 an artificial delay to the wake up timing. Th 84 via ``bdl_pos_adj`` option. 85 86 When ``bdl_pos_adj`` is a negative value (as d 87 an appropriate value depending on the controll 88 chips, it'd be 1 while it'd be 32 for others. 89 Only in case it doesn't work and you get warni 90 change this parameter to other values. 91 92 93 Codec-Probing Problem 94 --------------------- 95 A less often but a more severe problem is the 96 BIOS reports the available codec slots wrongly 97 confused and tries to access the non-existing 98 results in the total screw-up, and destructs t 99 with the codec chips. The symptom appears usu 100 like: 101 :: 102 103 hda_intel: azx_get_response timeout, switc 104 last cmd=0x12345678 105 hda_intel: azx_get_response timeout, switc 106 last cmd=0x12345678 107 108 The first line is a warning, and this is usual 109 It means that the codec response isn't notifie 110 driver uses explicit polling method to read th 111 very slight CPU overhead, but you'd unlikely n 112 113 The second line is, however, a fatal error. I 114 it means that something is really wrong. Most 115 accessing a non-existing codec slot. 116 117 Thus, if the second error message appears, try 118 codec slots via ``probe_mask`` option. It's a 119 corresponds to the codec slot. For example, t 120 slot, pass ``probe_mask=1``. For the first an 121 ``probe_mask=5`` (where 5 = 1 | 4), and so on. 122 123 Since 2.6.29 kernel, the driver has a more rob 124 this error might happen rarely, though. 125 126 On a machine with a broken BIOS, sometimes you 127 driver to probe the codec slots the hardware d 128 In such a case, turn the bit 8 (0x100) of ``pr 129 Then the rest 8 bits are passed as the codec s 130 unconditionally. For example, ``probe_mask=0x 131 the codec slots 0 and 1 no matter what the har 132 133 134 Interrupt Handling 135 ------------------ 136 HD-audio driver uses MSI as default (if availa 137 kernel as MSI works better on some machines, a 138 better for performance. However, Nvidia contr 139 regressions with MSI (especially in a combinat 140 thus we disabled MSI for them. 141 142 There seem also still other devices that don't 143 see a regression wrt the sound quality (stutte 144 in the recent kernel, try to pass ``enable_msi 145 MSI. If it works, you can add the known bad d 146 defined in hda_intel.c. In such a case, pleas 147 patch back to the upstream developer. 148 149 150 HD-Audio Codec 151 ============== 152 153 Model Option 154 ------------ 155 The most common problem regarding the HD-audio 156 unsupported codec features or the mismatched d 157 Most of codec-specific code has several preset 158 override the BIOS setup or to provide more com 159 160 The driver checks PCI SSID and looks through t 161 table until any matching entry is found. If y 162 you may see a message like below: 163 :: 164 165 hda_codec: ALC880: BIOS auto-probing. 166 167 Meanwhile, in the earlier versions, you would 168 :: 169 170 hda_codec: Unknown model for ALC880, tryin 171 172 Even if you see such a message, DON'T PANIC. 173 keep your towel. First of all, it's an inform 174 warning, no error. This means that the PCI SS 175 listed in the known preset model (white-)list. 176 that the driver is broken. Many codec-drivers 177 configuration mechanism based on the BIOS setu 178 179 The HD-audio codec has usually "pin" widgets, 180 configuration of each pin, which indicates the 181 connection type, the jack color, etc. The HD- 182 the right connection judging from these defaul 183 However -- some codec-support codes, such as p 184 support the automatic probing (yet as of 2.6.2 185 yes, pretty often broken. It sets up wrong va 186 driver. 187 188 The preset model (or recently called as "fix-u 189 basically to overcome such a situation. When 190 model is found in the white-list, the driver a 191 configuration of that preset with the correct 192 Thus, if you have a newer machine with a sligh 193 (or codec SSID) from the existing one, you may 194 re-use the same model. You can pass the ``mod 195 preset model instead of PCI (and codec-) SSID 196 197 What ``model`` option values are available dep 198 Check your codec chip from the codec proc file 199 section below). It will show the vendor/produ 200 chip. Then, see Documentation/sound/hd-audio/ 201 the section of HD-audio driver. You can find 202 and ``model`` options belonging to each codec. 203 ALC262 codec chip, pass ``model=ultra`` for de 204 with Samsung Q1 Ultra. 205 206 Thus, the first thing you can do for any brand 207 non-working HD-audio hardware is to check HD-a 208 different ``model`` option values. If you hav 209 might suit with your device well. 210 211 There are a few special model option values: 212 213 * when 'nofixup' is passed, the device-specifi 214 parser are skipped. 215 * when ``generic`` is passed, the codec-specif 216 only the generic parser is used. 217 218 A new style for the model option that was intr 219 is to pass the PCI or codec SSID in the form o 220 where XXXX and YYYY are the sub-vendor and sub 221 numbers, respectively. This is a kind of alia 222 when this form is given, the driver will refer 223 reference to the quirk table. It'd be useful 224 target quirk isn't listed in the model table. 225 model=103c:8862 will apply the quirk for HP Pr 226 isn't found in the model table as of writing) 227 handled equivalently by the same driver. 228 229 230 Speaker and Headphone Output 231 ---------------------------- 232 One of the most frequent (and obvious) bugs wi 233 silent output from either or both of a built-i 234 headphone jack. In general, you should try a 235 first. A speaker output often requires more a 236 the external amplifier bits. Thus a headphone 237 better chance. 238 239 Before making a bug report, double-check wheth 240 correctly. The recent version of snd-hda-inte 241 "Master" volume control as well as "Front" vol 242 indicates the front-channels). In addition, t 243 "Headphone" and "Speaker" controls. 244 245 Ditto for the speaker output. There can be "E 246 switch on some codecs. Turn on this if presen 247 248 Another related problem is the automatic mute 249 headphone plugging. This feature is implement 250 not on every preset model or codec-support cod 251 252 In anyway, try a different model option if you 253 Some other models may match better and give yo 254 functionality. If none of the available model 255 report. See the bug report section for detail 256 257 If you are masochistic enough to debug the dri 258 following: 259 260 * The speaker (and the headphone, too) output 261 external amplifier. This can be set usually 262 certain GPIO. If the codec pin supports EAP 263 chance via SET_EAPD_BTL verb (0x70c). On ot 264 it's either GPIO0 or GPIO1) may turn on/off 265 * Some Realtek codecs require special vendor-s 266 turn on the amplifier. See patch_realtek.c. 267 * IDT codecs may have extra power-enable/disab 268 analog pin. See patch_sigmatel.c. 269 * Very rare but some devices don't accept the 270 triggered. Issuing GET_PIN_SENSE verb (0xf0 271 codec-communication stall. Some examples ar 272 patch_realtek.c. 273 274 275 Capture Problems 276 ---------------- 277 The capture problems are often because of miss 278 Thus, before submitting a bug report, make sur 279 mixer correctly. For example, both "Capture V 280 Switch" have to be set properly in addition to 281 Source" or "Input Source" selection. Some dev 282 volume or switch. 283 284 When the PCM device is opened via "default" PC 285 plugin), you'll likely have "Digital Capture V 286 This is provided for the extra gain/attenuatio 287 software, especially for the inputs without th 288 control such as digital microphones. Unless r 289 should be set to exactly 50%, corresponding to 290 gain nor attenuation. When you use "hw" PCM, 291 this control will have no influence, though. 292 293 It's known that some codecs / devices have fai 294 and the recorded sound contains a certain DC-o 295 of the driver. 296 297 Most of modern laptops have no analog CD-input 298 recording from CD input won't work in many cas 299 provides it as the capture source. Use CDDA i 300 301 The automatic switching of the built-in and ex 302 is implemented on some codec models but not on 303 because of my laziness but mostly lack of test 304 submit the improvement patch to the author. 305 306 307 Direct Debugging 308 ---------------- 309 If no model option gives you a better result, 310 to fight against evil, try debugging via hitti 311 codec verbs to the device. Some tools are ava 312 hda-analyzer. The detailed description is fou 313 below. You'd need to enable hwdep for using t 314 Configuration" section. 315 316 317 Other Issues 318 ============ 319 320 Kernel Configuration 321 -------------------- 322 In general, I recommend you to enable the soun 323 ``CONFIG_SND_DEBUG=y``, no matter whether you 324 325 Don't forget to turn on the appropriate ``CONF 326 options. Note that each of them corresponds t 327 the controller chip. Thus, even if lspci show 328 you may need to choose the option for other ve 329 unsure, just select all yes. 330 331 ``CONFIG_SND_HDA_HWDEP`` is a useful option fo 332 When this is enabled, the driver creates hardw 333 (one per each codec), and you have a raw acces 334 these device files. For example, ``hwC0D2`` w 335 codec slot #2 of the first card (#0). For deb 336 hda-verb and hda-analyzer, the hwdep device ha 337 Thus, it'd be better to turn this on always. 338 339 ``CONFIG_SND_HDA_RECONFIG`` is a new option, a 340 hwdep option above. When enabled, you'll have 341 the corresponding hwdep directory. See "HD-au 342 section below. 343 344 ``CONFIG_SND_HDA_POWER_SAVE`` option enables t 345 See "Power-saving" section below. 346 347 348 Codec Proc-File 349 --------------- 350 The codec proc-file is a treasure-chest for de 351 It shows most of useful information of each co 352 353 The proc file is located in /proc/asound/card* 354 each codec slot. You can know the codec vendo 355 names, the type of each widget, capabilities a 356 This file, however, doesn't show the jack sens 357 is because the jack-sensing might be depending 358 359 This file will be picked up by the debug tools 360 to the emulator as the primary codec informati 361 section below. 362 363 This proc file can be also used to check wheth 364 used. When the generic parser is used, the ve 365 will appear as "Realtek ID 0262", instead of " 366 367 368 HD-Audio Reconfiguration 369 ------------------------ 370 This is an experimental feature to allow you r 371 codec dynamically without reloading the driver 372 files are available under each codec-hwdep dev 373 /sys/class/sound/hwC0D0): 374 375 vendor_id 376 Shows the 32bit codec vendor-id hex number 377 vendor-id value by writing to this file. 378 subsystem_id 379 Shows the 32bit codec subsystem-id hex num 380 subsystem-id value by writing to this file 381 revision_id 382 Shows the 32bit codec revision-id hex numb 383 revision-id value by writing to this file. 384 afg 385 Shows the AFG ID. This is read-only. 386 mfg 387 Shows the MFG ID. This is read-only. 388 name 389 Shows the codec name string. Can be chang 390 file. 391 modelname 392 Shows the currently set ``model`` option. 393 to this file. 394 init_verbs 395 The extra verbs to execute at initializati 396 writing to this file. Pass three numbers: 397 (separated with a space). 398 hints 399 Shows / stores hint strings for codec pars 400 Its format is ``key = value``. For exampl 401 will disable the jack detection of the mac 402 init_pin_configs 403 Shows the initial pin default config value 404 driver_pin_configs 405 Shows the pin default values set by the co 406 This doesn't show all pin values but only 407 the parser. That is, if the parser doesn' 408 config values by itself, this will contain 409 user_pin_configs 410 Shows the pin default config values to ove 411 Writing this (with two numbers, NID and va 412 value. The given will be used instead of 413 the next reconfiguration time. Note that 414 even the driver pin configs, too. 415 reconfig 416 Triggers the codec re-configuration. When 417 this file, the driver re-initialize and pa 418 again. All the changes done by the sysfs 419 into account. 420 clear 421 Resets the codec, removes the mixer elemen 422 specified codec, and clear all init verbs 423 424 For example, when you want to change the pin d 425 value of the pin widget 0x14 to 0x9993013f, an 426 re-configure based on that state, run like bel 427 :: 428 429 # echo 0x14 0x9993013f > /sys/class/sound/ 430 # echo 1 > /sys/class/sound/hwC0D0/reconfi 431 432 433 Hint Strings 434 ------------ 435 The codec parser have several switches and adj 436 matching better with the actual codec or devic 437 them can be adjusted dynamically via "hints" s 438 the section above. For example, by passing `` 439 via sysfs or a patch file, you can disable the 440 the codec parser will skip the features like a 441 auto-switch. As a boolean value, either ``yes 442 ``1`` or ``0`` can be passed. 443 444 The generic parser supports the following hint 445 446 jack_detect (bool) 447 specify whether the jack detection is avai 448 machine; default true 449 inv_jack_detect (bool) 450 indicates that the jack detection logic is 451 trigger_sense (bool) 452 indicates that the jack detection needs th 453 AC_VERB_SET_PIN_SENSE verb 454 inv_eapd (bool) 455 indicates that the EAPD is implemented in 456 pcm_format_first (bool) 457 sets the PCM format before the stream tag 458 sticky_stream (bool) 459 keep the PCM format, stream tag and ID as 460 default true 461 spdif_status_reset (bool) 462 reset the SPDIF status bits at each time t 463 up 464 pin_amp_workaround (bool) 465 the output pin may have multiple amp value 466 single_adc_amp (bool) 467 ADCs can have only single input amps 468 auto_mute (bool) 469 enable/disable the headphone auto-mute fea 470 auto_mic (bool) 471 enable/disable the mic auto-switch feature 472 line_in_auto_switch (bool) 473 enable/disable the line-in auto-switch fea 474 need_dac_fix (bool) 475 limits the DACs depending on the channel c 476 primary_hp (bool) 477 probe headphone jacks as the primary outpu 478 multi_io (bool) 479 try probing multi-I/O config (e.g. shared 480 mic/clfe jacks) 481 multi_cap_vol (bool) 482 provide multiple capture volumes 483 inv_dmic_split (bool) 484 provide split internal mic volume/switch f 485 digital mics 486 indep_hp (bool) 487 provide the independent headphone PCM stre 488 mixer control, if available 489 add_stereo_mix_input (bool) 490 add the stereo mix (analog-loopback mix) t 491 available 492 add_jack_modes (bool) 493 add "xxx Jack Mode" enum controls to each 494 change the headphone amp and mic bias VREF 495 power_save_node (bool) 496 advanced power management for each widget, 497 state (D0/D3) of each widget node dependin 498 stream states 499 power_down_unused (bool) 500 power down the unused widgets, a subset of 501 will be dropped in future 502 add_hp_mic (bool) 503 add the headphone to capture source if pos 504 hp_mic_detect (bool) 505 enable/disable the hp/mic shared input for 506 case; default true 507 vmaster (bool) 508 enable/disable the virtual Master control; 509 mixer_nid (int) 510 specifies the widget NID of the analog-loo 511 512 513 Early Patching 514 -------------- 515 When ``CONFIG_SND_HDA_PATCH_LOADER=y`` is set, 516 as a firmware file for modifying the HD-audio 517 initializing the codec. This can work basical 518 reconfiguration via sysfs in the above, but it 519 first codec configuration. 520 521 A patch file is a plain text file which looks 522 523 :: 524 525 [codec] 526 0x12345678 0xabcd1234 2 527 528 [model] 529 auto 530 531 [pincfg] 532 0x12 0x411111f0 533 534 [verb] 535 0x20 0x500 0x03 536 0x20 0x400 0xff 537 538 [hint] 539 jack_detect = no 540 541 542 The file needs to have a line ``[codec]``. Th 543 three numbers indicating the codec vendor-id ( 544 example), the codec subsystem-id (0xabcd1234) 545 the codec. The rest patch entries are applied 546 until another codec entry is given. Passing 0 547 the first or the second value will make the ch 548 field be skipped. It'll be useful for really 549 initialize SSID properly. 550 551 The ``[model]`` line allows to change the mode 552 In the example above, it will be changed to mo 553 Note that this overrides the module option. 554 555 After the ``[pincfg]`` line, the contents are 556 default pin-configurations just like ``user_pi 557 The values can be shown in user_pin_configs sy 558 559 Similarly, the lines after ``[verb]`` are pars 560 sysfs entries, and the lines after ``[hint]`` 561 sysfs entries, respectively. 562 563 Another example to override the codec vendor i 564 0xdeadbeef is like below: 565 :: 566 567 [codec] 568 0x12345678 0xabcd1234 2 569 570 [vendor_id] 571 0xdeadbeef 572 573 574 In the similar way, you can override the codec 575 ``[subsystem_id]``, the revision id via ``[rev 576 Also, the codec chip name can be rewritten via 577 :: 578 579 [codec] 580 0x12345678 0xabcd1234 2 581 582 [subsystem_id] 583 0xffff1111 584 585 [revision_id] 586 0x10 587 588 [chip_name] 589 My-own NEWS-0002 590 591 592 The hd-audio driver reads the file via request 593 a patch file has to be located on the appropri 594 typically, /lib/firmware. For example, when y 595 ``patch=hda-init.fw``, the file /lib/firmware/ 596 present. 597 598 The patch module option is specific to each ca 599 need to give one file name for each instance, 600 For example, if you have two cards, one for an 601 for an HDMI video board, you may pass patch op 602 :: 603 604 options snd-hda-intel patch=on-board-patch 605 606 607 Power-Saving 608 ------------ 609 The power-saving is a kind of auto-suspend of 610 device is inactive for a certain time, the dev 611 turned off to save the power. The time to go 612 ``power_save`` module option, and this option 613 via sysfs. 614 615 The power-saving won't work when the analog lo 616 some codecs. Make sure that you mute all unne 617 you want the power-saving. 618 619 The power-saving feature might cause audible c 620 power-down/up depending on the device. Some o 621 solvable, but some are hard, I'm afraid. Some 622 openSUSE enables the power-saving feature auto 623 cable is unplugged. Thus, if you hear noises, 624 power-saving. See /sys/module/snd_hda_intel/p 625 check the current value. If it's non-zero, th 626 627 The recent kernel supports the runtime PM for 628 chip, too. It means that the HD-audio control 629 down dynamically. The feature is enabled only 630 chips like Intel LynxPoint. You can enable/di 631 forcibly by setting ``power_save_controller`` 632 available at /sys/module/snd_hda_intel/paramet 633 634 635 Tracepoints 636 ----------- 637 The hd-audio driver gives a few basic tracepoi 638 ``hda:hda_send_cmd`` traces each CORB write wh 639 traces the response from RIRB (only when read 640 ``hda:hda_bus_reset`` traces the bus-reset due 641 ``hda:hda_unsol_event`` traces the unsolicited 642 ``hda:hda_power_down`` and ``hda:hda_power_up` 643 via power-saving behavior. 644 645 Enabling all tracepoints can be done like 646 :: 647 648 # echo 1 > /sys/kernel/tracing/events/hda/ 649 650 then after some commands, you can traces from 651 /sys/kernel/tracing/trace file. For example, 652 trace what codec command is sent, enable the t 653 :: 654 655 # cat /sys/kernel/tracing/trace 656 # tracer: nop 657 # 658 # TASK-PID CPU# TIMESTAMP FUN 659 # | | | | 660 <...>-7807 [002] 105147.774889: hd 661 <...>-7807 [002] 105147.774893: hd 662 <...>-7807 [002] 105147.999542: hd 663 <...>-7807 [002] 105147.999543: hd 664 <...>-26764 [001] 349222.837143: hd 665 <...>-26764 [001] 349222.837148: hd 666 <...>-26764 [001] 349223.058539: hd 667 <...>-26764 [001] 349223.058541: hd 668 669 Here ``[0:0]`` indicates the card number and t 670 ``val`` shows the value sent to the codec, res 671 a packed value, and you can decode it via hda- 672 included in hda-emu package below. For exampl 673 to set the left output-amp value to 25. 674 :: 675 676 % hda-decode-verb 0xe3a019 677 raw value = 0x00e3a019 678 cid = 0, nid = 0x0e, verb = 0x3a0, parm = 679 raw value: verb = 0x3a0, parm = 0x19 680 verbname = set_amp_gain_mute 681 amp raw val = 0xa019 682 output, left, idx=0, mute=0, val=25 683 684 685 Development Tree 686 ---------------- 687 The latest development codes for HD-audio are 688 689 * git://git.kernel.org/pub/scm/linux/kernel/gi 690 691 The master branch or for-next branches can be 692 development branches in general while the deve 693 and next kernels are found in for-linus and fo 694 respectively. 695 696 697 Sending a Bug Report 698 -------------------- 699 If any model or module options don't work for 700 to send a bug report to the developers. Give 701 bug report: 702 703 * Hardware vendor, product and model names 704 * Kernel version (and ALSA-driver version if y 705 * ``alsa-info.sh`` output; run with ``--no-upl 706 section below about alsa-info 707 708 If it's a regression, at best, send alsa-info 709 and non-working kernels. This is really helpf 710 compare the codec registers directly. 711 712 Send a bug report either the following: 713 714 kernel-bugzilla 715 https://bugzilla.kernel.org/ 716 alsa-devel ML 717 alsa-devel@alsa-project.org 718 719 720 Debug Tools 721 =========== 722 723 This section describes some tools available fo 724 problems. 725 726 alsa-info 727 --------- 728 The script ``alsa-info.sh`` is a very useful t 729 device information. It's included in alsa-uti 730 version can be found on git repository: 731 732 * git://git.alsa-project.org/alsa-utils.git 733 734 The script can be fetched directly from the fo 735 736 * https://www.alsa-project.org/alsa-info.sh 737 738 Run this script as root, and it will gather th 739 such as the module lists, module parameters, p 740 including the codec proc files, mixer outputs 741 elements. As default, it will store the infor 742 on alsa-project.org. But, if you send a bug r 743 run with ``--no-upload`` option, and attach th 744 745 There are some other useful options. See ``-- 746 details. 747 748 When a probe error occurs or when the driver o 749 mismatched model, it'd be helpful to load the 750 ``probe_only=1`` option (at best after the col 751 alsa-info at this state. With this option, th 752 the mixer and PCM but just tries to probe the 753 probing, the proc file is available, so you ca 754 information before modified by the driver. Of 755 isn't usable with ``probe_only=1``. But you c 756 configuration via hwdep sysfs file if hda-reco 757 Using ``probe_only`` mask 2 skips the reset of 758 ``probe_only=3`` as module option). The hwdep 759 to determine the BIOS codec initialization. 760 761 762 hda-verb 763 -------- 764 hda-verb is a tiny program that allows you to 765 codec directly. You can execute a raw HD-audi 766 This program accesses the hwdep device, thus y 767 kernel config ``CONFIG_SND_HDA_HWDEP=y`` befor 768 769 The hda-verb program takes four arguments: the 770 widget NID, the verb and the parameter. When 771 on the slot 2 of the card 0, pass /dev/snd/hwC 772 argument, typically. (However, the real path 773 system.) 774 775 The second parameter is the widget number-id t 776 parameter can be either a hex/digit number or 777 to a verb. Similarly, the last parameter is t 778 can be a string for the parameter type. 779 780 :: 781 782 % hda-verb /dev/snd/hwC0D0 0x12 0x701 2 783 nid = 0x12, verb = 0x701, param = 0x2 784 value = 0x0 785 786 % hda-verb /dev/snd/hwC0D0 0x0 PARAMETERS 787 nid = 0x0, verb = 0xf00, param = 0x0 788 value = 0x10ec0262 789 790 % hda-verb /dev/snd/hwC0D0 2 set_a 0xb080 791 nid = 0x2, verb = 0x300, param = 0xb080 792 value = 0x0 793 794 795 Although you can issue any verbs with this pro 796 won't be always updated. For example, the vol 797 cached in the driver, and thus changing the wi 798 via hda-verb won't change the mixer value. 799 800 The hda-verb program is included now in alsa-t 801 802 * git://git.alsa-project.org/alsa-tools.git 803 804 Also, the old stand-alone package is found in 805 806 * ftp://ftp.suse.com/pub/people/tiwai/misc/ 807 808 Also a git repository is available: 809 810 * git://git.kernel.org/pub/scm/linux/kernel/gi 811 812 See README file in the tarball for more detail 813 program. 814 815 816 hda-analyzer 817 ------------ 818 hda-analyzer provides a graphical interface to 819 control, based on pyGTK2 binding. It's a more 820 hda-verb. The program gives you an easy-to-us 821 the widget information and adjusting the amp v 822 proc-compatible output. 823 824 The hda-analyzer: 825 826 * https://git.alsa-project.org/?p=alsa.git;a=t 827 828 is a part of alsa.git repository in alsa-proje 829 830 * git://git.alsa-project.org/alsa.git 831 832 Codecgraph 833 ---------- 834 Codecgraph is a utility program to generate a 835 codec-node connection of a codec chip. It's e 836 you analyze or debug a codec without a proper 837 parses the given codec proc file and converts 838 program. 839 840 The tarball and GIT trees are found in the web 841 842 * http://helllabs.org/codecgraph/ 843 844 845 hda-emu 846 ------- 847 hda-emu is an HD-audio emulator. The main pur 848 to debug an HD-audio codec without the real ha 849 doesn't emulate the behavior with the real aud 850 dumps the codec register changes and the ALSA- 851 at probing and operating the HD-audio driver. 852 853 The program requires a codec proc-file to simu 854 for the target codec beforehand, or pick up an 855 codec proc collections in the tarball. Then, 856 proc file, and the hda-emu program will start 857 and simulates the HD-audio driver: 858 859 :: 860 861 % hda-emu codecs/stac9200-dell-d820-laptop 862 # Parsing.. 863 hda_codec: Unknown model for STAC9200, usi 864 hda_codec: pin nid 08 bios pin config 40c0 865 .... 866 867 868 The program gives you only a very dumb command 869 can get a proc-file dump at the current state, 870 (mixer) elements, set/get the control element 871 operation, the jack plugging simulation, etc. 872 873 The program is found in the git repository bel 874 875 * git://git.kernel.org/pub/scm/linux/kernel/gi 876 877 See README file in the repository for more det 878 program. 879 880 881 hda-jack-retask 882 --------------- 883 hda-jack-retask is a user-friendly GUI program 884 HD-audio pin control for jack retasking. If y 885 the jack assignment, try this program and chec 886 useful results. Once when you figure out the 887 it can be fixed either in the driver code stat 888 firmware patch file (see "Early Patching" sect 889 890 The program is included in alsa-tools now: 891 892 * git://git.alsa-project.org/alsa-tools.git
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.