23 jan 2012 kl. 20:48 skrev Jeffrey Barish <jeff_bar...@earthlink.net>:
>
>
> On Mon, Jan 23, 2012 at 11:28 AM, Anders Genell <anders.gen...@gmail.com>
> wrote:
>
> Just a blind shot in the dark:
> Would it help to have your udev-script call
> /sbin/alsa -force-reload
> upon reconnection
> ?
>
> Regards,
> Anders
>
> 23 jan 2012 kl. 19:16 skrev Jeffrey Barish <jeff_bar...@earthlink.net>:
>
>>
>>
>> On Mon, Jan 23, 2012 at 10:36 AM, Jeffrey Barish <jeff_bar...@earthlink.net>
>> wrote:
>>
>>
>> On Mon, Jan 23, 2012 at 1:17 AM, Clemens Ladisch <cladi...@googlemail.com>
>> wrote:
>> Jeffrey Barish wrote:
>> > A USB DAC may or may not be connected to my system. When it is
>> > connected, sound should come out the USB DAC. When it is not
>> > connected, sound should come out the internal DAC.
>>
>> AFAIK PulseAudio can be configured to do this automatically, even when
>> a stream is currently being played.
>>
>> > The solution that I implemented uses udev to detect when the USB DAC
>> > is connected/disconnected. udev runs a script when it detects
>> > a change. The script writes ~/.asoundrc
>> > [...]
>> > So, what is different about restarting the daemon from the command
>> > line versus restarting it from the script.
>>
>> Maybe ~ points to another user's home directory, or you're using a udev
>> event that happens before the USB sound device is registered.
>>
>>
>> Regards,
>> Clemens
>>
>>
>> Yes, I am aware that pulseaudio can do what I want automatically. However,
>> it is only recent versions of pulseaudio that have this capability. I am
>> running Ubuntu 10.10. The version of pulseaudio that runs on this platform
>> does not have this capability. I can't upgrade the OS, so I tried, but
>> failed, to make pulseaudio from source. I would rather not introduce
>> another dependency anyway. It seemed as if I could solve the problem using
>> alsa alone, but now I am wondering.
>>
>> The ~ theory is a good thought. Unfortunately, I misled you. I used ~ as a
>> shorthand when composing the message. The actual code uses a full path. In
>> any case, I know that the correct .asoundrc file is being updated because I
>> see the new contents and because the sound does actually switch when I
>> disconnect the USB DAC.
>>
>> Your second suggestion is also interesting. I described two changes I made
>> to test that theory. First, I removed the numeric prefix from the name of
>> the rules file so that it runs after all the rules in /lib/udev/rules.d. I
>> figured that allowing all other rules to run first would provide an
>> opportunity for the USB DAC to be registered by the time my script runs.
>> Then, in case I was wrong about the effect of that change, I inserted a
>> 2-second delay before restarting my daemon. I figured that the delay would
>> provide ample time for the registration to take place. Does anyone know
>> these tests to be invalid? When you talk about the USB DAC being
>> "registered", do you mean by udev, or something else? If I do "cat
>> /proc/asound/cards" in my script, I see both cards even when udev runs the
>> script.
>>
>> Your suggestion did point out another difference. When my script runs under
>> udev, it is owned by root. When I restart the daemon from the command line,
>> I would be me except that I use sudo. To make the two situations as similar
>> as possible, I tried running the udev script itself from the command line
>> using sudo (rather than simply restarting the daemon using sudo):
>>
>> sudo ACTION=add udev-script.sh
>>
>> When activated this way, the script runs exactly the same commands that it
>> runs when activated by udev, and the commands in the script all produce the
>> same output (except that the pid of the daemon changes). However, when run
>> by udev the script does not switch the sound to the USB DAC and when run
>> from the command line, it does. I can't think of any difference, though, as
>> in both cases the script runs as root.
>>
>> Here's something new:
>>
>> If I set up the system to use the USB DAC -- sound is actually come out the
>> USB DAC -- and then I disconnect the USB DAC while playing, I get the error
>> message
>>
>> Cannot connect to server socket err = No such file or directory
>> Cannot connect to server socket
>> jack server is not running or cannot be started
>>
>> I don't know what these messages mean, but I'm wondering: Is it possible
>> that if alsa sees these messages when it first tries to connect the USB DAC
>> under udev, it decides that something is wrong with the USB DAC and refuses
>> to abandon the internal DAC? Maybe by the time I run the script from the
>> command line, whatever it is that causes these error messages to be produced
>> has settled, so alsa proceeds with the switch.
>>
>> As far as I know, I am not running jack. ps aux | grep jack lists nothing
>> even when sound is coming out the USB DAC. But something seems to think
>> that I should be running jack. Maybe that something is interfering with the
>> switch.
>> --
>> Jeffrey Barish
>>
>> RED HERRING alert. Those error messages are produced whenever play starts,
>> whether playing through the internal or USB DAC. They do not appear when I
>> simply disconnect or connect the USB DAC. I was confused because I happened
>> to be playing before when I disconnected the USB DAC. I'm curious to know
>> why I get these error messages, but I don't think they're related to the
>> current issue. I think they must be coming from GStreamer.
>>
>> --
>> Jeffrey Barish
>
> Worth a try, 'cause I got nothin'. Alas, it doesn't seem to make a
> difference, whether I issue the command in the script or from the command
> line. The only effect I could detect is that the internal DAC disappeared
> from the system (I got it back when I rebooted).
>
> Thanks, though.
> --
> Jeffrey Barish
> ------------------------------------------------------------------------------
> Try before you buy = See our experts in action!
> The most comprehensive online learning library for Microsoft developers
> is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
> Metro Style Apps, more. Free future releases when you subscribe now!
> http://p.sf.net/sfu/learndevnow-dev2
> _______________________________________________
> Alsa-user mailing list
> Alsa-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-user
Oh well...
I have had problems with alsa loosing connection to USB-cards, or
intermittently rearranging the device order, and the force-reload trick has
worked fairly well.
Just today I was installing the Intel Fortran compiler from rpm:s onto an
Ubuntu-system (don't ask...) and had a hell of a struggle getting it running
until I googled and found it was due to that recent Ubuntu versions link
/bin/dash to /bin/sh, instead of /bin/bash. This caused some error when using
flags with the compiler command.
So, I was just wondering if the default shell differs between your account and
root?
Regards,
Anders
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user