Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:setting_up_sound [2016/09/04 00:51] – try to rebuild without dokuwiki errors aus9wiki:setting_up_sound [2018/10/04 20:21] (current) – [Rich setup guide] aus9
Line 18: Line 18:
  
 good luck and [[sound_setup_using_oss| click here for OSS wiki]] good luck and [[sound_setup_using_oss| click here for OSS wiki]]
 +
 +=====Remove OSS=====
 +If you have previously installed OSS remove those packages from onboot
 +
 +{{wiki:twid_70_mob.jpg}}
 +
 +</code>
 +
 +
 +
 +=====Rich setup guide=====
 +Install alsa-config.tcz and alsa.tcz
 +
 +Install alsamixergui.tcz (optional)
 +
 +Set the volume control on the front of the speaker about 1/3 of the way up
 +
 +Run:
 +<code>alsactl init</code>
 +
 +This produced a slight thump as the card was found and initialized. That command
 +also unmuted the speakers and set the mixer volumes at sane levels.
 +
 +Run:
 +<code>speaker-test [-Ddefault:1] -c2 -t wav -l1</code>
 +
 +If all went well, you should hear the phrases  "Front Left"  and  "Front Right"  from
 +your left and right speakers respectively.
 +
 +Run:
 +<code>sudo alsactl store</code>
 +
 +Run:
 +<code>echo alsactl restore >> /opt/bootlocal.sh</code>
 +
 +Run:
 +<code>echo usr/local/etc/alsa/asound.state >> /opt/.filetool.lst</code>
 +
 +Run a backup to save your setup.
 +=====Hearing sound using ALSA=====
 +
 +From the Apps panel, search and choose alsa and alsamixergui as onboot items. Also choose a gui media player, I prefer vlc, as onboot item then reboot computer.
 +
 +If you only need to unmute or raise volumes see the next section on a graphical (mouse friendly) mixer.
 +
 +If alsamixergui shows all "needed" outputs are unmuted and volumes already set ok, **then**, you do not need to adjust the mixer levels. Open your preferred media player and you may need to configure it to use ALSA. Navigate to /usr/local/share/sounds/alsa and play the sound files to test if you truly have 2 channel or surround sound. If no changes needed jump to [[alsa_part2#persistence]]
 +
 +Alternative mixer is a terminal mixer, command
 +<code>
 +alsamixer
 +</code>
 +
 +If you need to make changes to your **inputs** such as microphone (mic) jump to 
 +[[alsa_part2#alsamixer|alsamixer]] and the sections below that please.
 +
 +If you need surround sound and the mixers control or options are **not correct** then jump to  
 +[[setting_up_sound#blacklist|blacklist]] and read each section below until you get to index issues.
 +
 +If you would like to read about surround sound, then jump to [[alsa_part2#surround_sound|surround sound]]
 +
 +If you have multiple sound devices, and the **wrong one** is currently showing in your mixer then jump to [[#index_issues|index issues]]
 +
 +If you needed only to make mixer changes for outputs but everything else is OK, read the next section then you can jump to [[alsa_part2#persistence_section|persistence]]
 +
 +For HDMI users, if your hdmi is not showing in your mixer scroll down to the HDMI/asoundrc section please
 +
 +All users who had to tweak, remember once done, you too need to visit the persistence section
 +
 +You don't have to jump, (clickable links) as there are 2 pages so take your time to read and hopefully understand these pages
 +
 +
 +=====HDMI or .asoundrc users =====
 +
 +Although I use HDMI as the main theme in this section, it applies to all users that need it and model=string in other sections or index strings does not resolve sound issues for you.
 +
 +If your mixer does not show up your HDMI device, you are likely to need an /home/tc/.asoundrc file
 +
 +Note its dot asoundrc, if you don't have one, we are going to create one now. But I don't have a HDMI sound device so will pretend to have one.
 +
 +First run the command and look at my results and pretend you see mention of HDMI
 +<code>
 +tc@box:~$ aplay -l
 +**** List of PLAYBACK Hardware Devices ****
 +card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +card 0: Intel [HDA Intel], device 1: STAC92xx Digital [STAC92xx Digital]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +</code>
 +
 +Now reducing my aplay command to bare essentials, it reads
 +<code>
 +card 0, device 0 (analog) 
 +---subdevice 0
 +card 0, device 1 (digital)
 +---subdevice 0
 +</code>
 +
 +But lets pretend you see output for digital and it reads
 +
 +card 0 , device 1   (hdmi)\\
 +---subdevice 0
 +
 +as the first subdevice tends to be hdmi, we can drop reference to it in the asoundrc but if you need it, add the extra line below device (number)
 +^subdevice (number)^
 +
 +We next create a file to be saved as /home/tc/.asoundrc with contents in a code box for display purposes only
 +
 +<code>
 +pcm.!default { 
 +type hw 
 +card 0
 +device 1
 +
 +
 +ctl.card0 {
 +type hw
 +card 0
 +device 1
 +}
 +</code>
 +
 +The first string pcm......!default is telling alsa....try this device first for any application wanting to use sound.
 +
 +Now as we newbies, instead of learning how to stop and restart alsa, we cheat and logout and choose "Exit to Prompt", then run your mixer to see if you have HDMI showing up. If it does do a reboot and retest.
 +
 +Now if you need to change any mixer level, [[wiki:alsa_part2#persistence|click here for persistence]]
 +
 +=====asoundrc wiki=====\\
 +http://alsa.opensrc.org/.asoundrc
 +
 +  
 +=====  alsamixergui=====
 +Newbie alert: alsamixergui is only safe to use for outputs and I will demonstrate the outputs here.
 +
 +{{twid_63_alsamix1.jpg?450x250}}
 +
 +Press F1 for help
 +
 +{{twid_69_help2.jpg}}
 +
 +
 +To Mute or un-mute sound out, we use our mouse to click on the "speaker icons" above the sliders.\\
 +green is **on** (unmuted) and white is **off** (muted)
 +
 +To Lock or un-lock the sliders together we click on the padlock icon below the sliders.
 +
 +To raise or lower volumes we   \\
 +   * click where you **want** the slider to be at or\\
 +   * press the page up or page down buttons or \\
 +   * hold the up or down arrows for slower movement
 +
 +In the next image, I have clicked the speaker selection, it turns **grey** to show its active for mouse or keyboard inputs\\
 +I then clicked the padlock to re-lock the volume sliders \\
 +Then clicked where I wanted the volumes.\\
 +Can you spot where else I have clicked?
 +
 +{{twid_64_alsamix2.jpg?120x280}}
 +
 +If on reboot, you can see your sound device is detected, but you hear no sound then you need to make changes to your mixer levels and to save that configuration called persistence so you don't need to redo it over again on reboot.
 +
 +If you can see your sound device in the mixer panel, then ALSA and its TinyCore script called **alsasound** has does its job. Mixer settings can not be predicted for all users, so you may need to tweak them.
 +
 +If you can not see your sound device in the mixer panel, try running the alsamixer command. If you can not see your sound device, then choose alsaconf from the Apps panel as an onboot item and reboot your computer. See the alsaconf section for more details.
 +
 +If you can see your sound device, but you are not seeing surround sound channels, then you need to do a tweak.\\
 +This is more likely for Intel sound devices. See the something section on how to proceed.
 +
 +Newbie alert: If you needed to make a change to any mixer, alsamixergui or alsamixer,\\
 + then you "need" to setup persistence. If you plan on not making any other changes other than to output mixer settings you can jump to [[alsa_part2#persistence|persistence ]]
 +
 +If you have multiple sound devices or the mixer channels are not correct or still no sound continue reading please.
 +
 +=====Technical details for Newbies if no sound=====
 +To hear sound, you need a sound tcz to load called alsa.tcz (this also loads dependencies)\\
 +On boot up, that tcz provides a script called alsasound. That script provides the relevant sound modules.\\
 +It attempts to restore any persistent sound files. If no persistent sound files are found, it sets up "default" mixer levels.
 +
 +Default mixer levels may result in an output being muted or volume too low, in which case review the alsamixergui section
 +
 +If still no sound, you can try the following tests assuming alsmixergui did not work for you.
 +
 +To test if any sound module(s) are loaded run
 +<code>
 +lsmod | grep snd
 +</code>
 +
 +To test what sound devices ALSA detects run
 +<code>
 +aplay -l
 +</code>
 +
 +Here are my outputs to give you an idea
 +<code>
 +lsmod | grep snd
 +snd_hda_codec_idt      40960  1 
 +snd_hda_intel          20480  0 
 +snd_hda_codec          49152  2 snd_hda_codec_idt,snd_hda_intel
 +snd_hwdep              12288  1 snd_hda_codec
 +snd_pcm                45056  2 snd_hda_intel,snd_hda_codec
 +snd_timer              20480  1 snd_pcm
 +snd                    32768  6 snd_hda_codec_idt,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
 +soundcore              12288  1 snd
 +snd_page_alloc         12288  2 snd_hda_intel,snd_pcm
 +
 +aplay -l
 +**** List of PLAYBACK Hardware Devices ****
 +card 0: Intel [HDA Intel], device 0: STAC92xx Analog [STAC92xx Analog]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +card 0: Intel [HDA Intel], device 1: STAC92xx Digital [STAC92xx Digital]
 +  Subdevices: 1/1
 +  Subdevice #0: subdevice #0
 +</code>
 +
 +Now the essential driver for intel users is snd_hda_intel followed by the codec entry. If you have multiple sound devices, aplay output will show card 0,1 etc
 +
 +If no sound kernel module loaded, aplay will fail
 +<code>
 +aplay -l
 +aplay: device_list:240: no soundcards found...
 +</code>
 +
 +Some reasons why sound kernel modules are not found, include:\\
 +   * tcz not included in onboot.lst (or if applicable, other needed tcz files)\\
 +   * kernel modules exist, but not for this sound device\\
 +      firmware may be required\\
 +   * modules exist, but a system setting such as the bootcode has "blacklisted" the loading of the module\\
 +   * modules exist, but a module "option" disables sound outputs 
 +
 +=====alsaconf when the aplay list is empty=====
 +If you downloaded alsa and its in your onboot list and you rebooted, you should have sound devices configured. You may need to adjust the mixers to **hear** sound. However, if 
 +<code>
 +aplay -l
 +</code> 
 +does not show any devices, then download alsaconf so its also an "onboot" tcz and reboot to retest your sound. If on reboot, no sound devices are detected, then run
 +<code>
 +sudo alsaconf
 +</code>
 +and follow the prompts to search and configure your sound device.
 +
 +Users with ISA sound devices may need alsaconf. If the only changes were to mixer levels or running alsaconf you can now jump to [[alsa_part2#persistence|persistence]]
 +
 +===== blacklist =====
 +This option needs edit of your boot loader config with root powers. This is **unofficial** recommended way for all users where:\\
 +   * module displays incorrect mixer channels or lacks quirk etc (model=string usage) \\
 +   * you have an internal device you never use, you want only an USB device to gain index=0 value\\
 +   * there are 2 modules available for your sound device and the wrong one is grabbing control of your device.
 +   * you have 2 or more sound devices and you want to use a local bootcode, meaning you do not want to disable any device.
 +
 +The name of your your bootloader config file will vary depending on your software. If you use grub, its likely to be
 +/boot/grub/menu.lst.
 +
 +If you prefer to use a blacklist bootcode then use lsmod to find your sound module then use bootcode=\\
 +^blacklist=sound_module_name^
 +
 +eg I use blacklist=snd_hda_intel
 +
 +If you have multiple modules to blacklist you can use the formula
 +^blacklist=sound_module_name,module_2,module_3 etc^
 +
 +=====Blacklist for permanent disable of internal sound device=====
 +So if you have a computer where the internal sound, onboard or isa or pci is faulty or deficient, blacklist the internal sound module.
 +
 +On reboot, any new sound device detected (USB) will grab index=0 value, the value preferred by skype and other media playing software and you do not need persistence unless your mixer levels for USB device need changing etc.
 +
 +From then on, treat your USB device like an internal device and re-read whether you have sound device detected, hear sound, need mixer levels changed etc.
 +
 +
 +=====bootlocal.sh tweaks - Part one -- alternative blacklist type method=====
 +Newbie alert: This section is for those who could not use default sound mixer controls or wish to disable internal sound devices. The effect of the modprobe -r is to remove the module which is the same effect as blacklisting but may be more suitable for newbies. 
 +
 +Use root powers to edit /opt/.bootlocal.sh instead of editting your bootloader config file. The bootlocal script does not know about blacklisting of modules so we do this by a remove module command. There are 2 ways of removing modules so I will only show the one way to keep it simple? For example
 +^/sbin/modprobe -r snd_hda_intel^
 +
 +Upon reboot for any named sound module, lsmod will now fail if that was a needed module. The reasons are showing in the blacklist section above.
 +
 +One advantage of this newbie technique is you can on-the-fly test out various model=string or quirks through running commands like this
 +<code>
 +sudo /sbin/modprobe -r sound_module_name
 +sudo /sbin/modprobe sound_module-name model=string 
 +</code>
 +In other words, what we test live, is roughly what we show in bootlocal but drop the word sudo
 +
 +=====Reasons for changing=====
 +In this section, the blacklist is the same as the modprobe -r command. But we are doing it, because you find that the mixer channels or switches or options are not a match to your actual hardware. This is true for my intel device and may be true of a number of intel devices but also affects some other sound module users such as AC97.
 +
 +This means we need to research our sound device to find what options we need, if you did have sound or if you need more channels etc. Before rebooting with that new bootlocal entry, check what your sound module accepts as parameters. I prefer to call them options. For example
 +<code>
 +modinfo snd_hda_intel
 +filename:       kernel.tclocal/sound/pci/hda/snd-hda-intel.ko.gz
 +description:    Intel HDA driver
 +license:        GPL
 +vermagic:       3.0.21-tinycore SMP mod_unload 486 
 +parm:           power_save_controller:Reset controller in power save mode.
 +parm:           power_save:Automatic power-saving timeout (in second, 0 = disable).
 +parm:           beep_mode:Select HDA Beep registration mode (0=off, 1=on, 2=mute switch on/off) (default=1).
 +parm:           patch:Patch file for Intel HD audio interface.
 +parm:           enable_msi:Enable Message Signaled Interrupt (MSI)
 +parm:           single_cmd:Use single command to communicate with codecs (for debugging only).
 +parm:           probe_only:Only probing and no codec initialization.
 +parm:           probe_mask:Bitmask to probe codecs (default = -1).
 +parm:           bdl_pos_adj:BDL position adjustment offset.
 +parm:           position_fix:DMA pointer read method.(0 = auto, 1 = LPIB, 2 = POSBUF, 3 = VIACOMBO).
 +parm:           model:Use the given board model.
 +parm:           enable:Enable Intel HD audio interface.
 +parm:           id:ID string for Intel HD audio interface.
 +parm:           index:Index value for Intel HD audio interface.
 +depends:        snd-hda-codec,snd-pcm,snd,snd-page-alloc
 +</code>
 +If this is too much info for newbies, ignore the modinfo command.
 +
 +=====Research your sound device=====
 +lsmod shows what your sound module is. Now use that information to check the list of files for {{http://www.kernel.org/doc/Documentation/sound/alsa/|sound module options and tweaks}}
 +<code>
 +ALSA-Configuration.txt     
 +Audigy-mixer.txt           
 +Audiophile-Usb.txt         
 +Bt87x.txt                   
 +CMIPCI.txt                 
 +ControlNames.txt          
 +HD-Audio-Models.txt        
 +HD-Audio.txt              
 +Joystick.txt                
 +MIXART.txt                 
 +OSS-Emulation.txt          
 +Procfile.txt              
 +README.maya44              
 +SB-Live-mixer.txt           
 +VIA82xx-mixer.txt            
 +alsa-parameters.txt        
 +emu10k1-jack.txt           
 +hda_codec.txt              
 +hdspm.txt                  
 +powersave.txt             
 +seq_oss.html                
 +serial-u16550.txt 
 +</code>
 +**Intel** and some other users may need to check their codec in case one sound module has multiple codecs.\\
 +<code>
 +head -n1 /proc/asound/card0/codec\#
 +Codec: SigmaTel STAC9221 A2
 +</code>
 +This information may be seen in alsamixer command or in alsamixergui, if it works. Then for Intel users, read HD-Audio-Models.txt and for my sound module I note the following options
 +
 +But I have just had to change while testing PA and the new preferred method for intel users is this link
 +http://voices.canonical.com/david.henningsson/2012/07/13/top-five-wrong-ways-to-fix-your-audio/
 +
 +and so we now use model=auto.
 +
 +=====bootlocal.sh tweaks - Part two -- to change mixer controls or settings=====
 +
 +====Part 1 where you also have a blacklist====
 +Blacklist your sound module in your bootloader config file using root powers.\\
 +Add the following line to your bootlocal file, but change formula to actual module and actual model details
 +^/sbin/modprobe sound_module model=string^
 +
 +eg I use /sbin/modprobe snd_hda_intel model=auto
 +
 +====Part 2 where you have not blacklisted====
 +You will need a remove module and re-insert module command, using formula
 +for example
 +^/sbin/modprobe -r sound_module^
 +^/sbin/modprobe sound_module model=string^ 
 +Before I tweaked bootlocal my first time boot up image was
 +
 +{{wiki:twid_65_nosurround.jpg?400x250}}
 +
 +on tweaked reboot the image becomes 2 channel, but surround sound capable. 
 +
 +{{wiki:twid_66_surround1.jpg?400x250}}
 +
 +=====index or sound device number issues=====
 +As a general rule, most software applications, wanting to play or record sound, prefer to use the first detected sound device. We call this index=0 even if you have not setup any index value.  Its the same as saying the card number and ALSA counts devices from zero not from one.
 +
 +Lets look at someone with an internal device and an external device. Options are:
 +
 +   * Default, Alsa detects internal device before USBs,  so internal obtains index=0 value.
 +     * Then you insert your USB device and so it gets index=1.
 +       * No changes needed to any files for above but a problem if you want USB to get index=0 ---- so next is a possible solution
 +
 +   * User blacklists the sound module for internal device  
 +     * USB inserted at any stage of bootup achieves index=0
 +       * For above, use [[#blacklist|blacklist]]
 + 
 +   * User uses USB at home but needs internal when they travel (portable computer) 
 +     * Can use manual commands or scripts to have the effect of remove module, insert new module with index=0.
 +     * May prefer the harder to setup, but easier to use in the long run method, jump to [[alsa_part2#choose_sound_devices_at_boot|choose sound devices at boot]]
 +=====Page 2=====
 +[[wiki:alsa_part2|click here to next page]]
  
  
Print/export
QR Code
QR Code wiki:setting_up_sound (generated for current page)