Re: [alsa-devel] snd-bebob and PrismSound Orpheus fails with snd_pcm_hw_params_set_channels
Takashi Sakamoto wrote:
% cat /proc/asound/card2/firewire/clock Sampling rate: 44100 Clock Source: External (MSU-dest: 7)
According to this output, the internal clock of your device is set to synchronize to external source such as S/PDIF or word clock.
Oops. Let me boot my Windows7 again, and see.. https://spinorlab.wordpress.com/2015/04/24/orpheus-and-its-sync-source/ (see orpheussyncsource.jpg)
The control program by PrismSound tells that the Sync Source is Local, which means it is a Master and System is sync'ed to Orpheus's local clock.
http://www.prismsound.com/music_recording/products_subs/orpheus/online_manua... (Contents -> Orpheus hardware -> Synchronization) (Contents -> Orpheus software -> Orpheus Control Panel)
Funny?
Now reboot again, and going back to Linux.
------------------ % dmesg <- Orpheus was powered on already. ------------------
[ 20.927594] r8169 0000:02:00.0 eth0: link down [ 23.299665] r8169 0000:02:00.0 eth0: link up [ 27.676032] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 29.974533] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 32.282923] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 34.961027] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 37.259624] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 47.732497] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 50.030918] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 52.339515] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 55.037594] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 57.316079] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08
------------------ % ls -l /proc/asound lrwxrwxrwx 1 root root 5 Apr 24 20:24 Orpheus -> card0
------------------ % cat /proc/asound/card0/firewire/clock Sampling rate: 44100 Clock Source: External (MSU-dest: 7) <- as Takashi pointed out!
------------------ % aplay -D plughw:0,0 test.wav <- same happens as is expected ------------------
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo aplay: set_params:1297: Unable to install hw params: ACCESS: RW_INTERLEAVED FORMAT: S16_LE SUBFORMAT: STD SAMPLE_BITS: 16 FRAME_BITS: 32 CHANNELS: 2 RATE: 44100 PERIOD_TIME: (46439 46440) PERIOD_SIZE: 2048 PERIOD_BYTES: 8192 PERIODS: 4 BUFFER_TIME: (185759 185760) BUFFER_SIZE: 8192 BUFFER_BYTES: 32768 TICK_TIME: 0
------------------ % dmesg <- the last line is added. ------------------
[ 20.927594] r8169 0000:02:00.0 eth0: link down [ 23.299665] r8169 0000:02:00.0 eth0: link up [ 27.676032] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 29.974533] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 32.282923] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 34.961027] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 37.259624] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 47.732497] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 50.030918] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 52.339515] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 55.037594] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 57.316079] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08 [ 1483.932836] snd-bebob fw1.0: Detect discontinuity of CIP: 00 08
***
If your device is implemented with no customization of the setting and you didn't give any external sources to your device, the device is not synchronized. (If you give it correctly, please inform it to us.)
I am not sure, but I think I gave it correctly to Local Sync Source.
libffado also supports this device and I guess you can start streaming with jackd and firewire backend
Yes, as I have mentioned, I have been always successful with alsa (vanilla without snd-*) + libffado + jackd.
because libffado implements loose checker of packet discontinuity.
I do not understand techinical details, but the sound was perfect even with 192kHz/24bit audio using libffado.
So if it's only a #define TIMER_SOMETHING value_anything type of things...
Currently, libffado has a bug to fail to switch clock source for usual BeBoB driver. So we have no way to set the source of clock correctly. I've tried to fix it but get stuck deeply into ffado's fault and given up.
As for me, clock source settings, etc., which is written into its EEPROM when powered off, can be occasionally set via the control program by PrismSound either on Windows/OS X, only when it becomes necessary.
So personally I really do not matter, if I understand the situation correctly.
For our information: http://subversion.ffado.org/wiki/AvcModels/PrismSoundOrpheus
I hope some day this level of information becomes usefull for me.
Regards, Mike Ood
On Apr 24 2015 21:27, Mike Ood wrote:
Takashi Sakamoto wrote:
% cat /proc/asound/card2/firewire/clock Sampling rate: 44100 Clock Source: External (MSU-dest: 7)
According to this output, the internal clock of your device is set to synchronize to external source such as S/PDIF or word clock.
Oops. Let me boot my Windows7 again, and see.. https://spinorlab.wordpress.com/2015/04/24/orpheus-and-its-sync-source/ (see orpheussyncsource.jpg)
The control program by PrismSound tells that the Sync Source is Local, which means it is a Master and System is sync'ed to Orpheus's local clock.
http://www.prismsound.com/music_recording/products_subs/orpheus/online_manua... (Contents -> Orpheus hardware -> Synchronization) (Contents -> Orpheus software -> Orpheus Control Panel)
Funny?
Not funny, but headache. It's a customization by hardware vendor, I mentioned. (in this case, by PrismSound Ltd.)
BridgeCo AG (currently ArchWave AG) produced DM1000/DM1100/DM1500 chipset with BeBoB firmware. PrismSound Ltd. utilized the chipset and firmware for streaming functionality of your Orpheus.
BeBoB firmware gives common ways to control itself, while the hadware vendor added their own cusomization against it. I don't know exactly the reason because there're few information about your device.
I am not sure, but I think I gave it correctly to Local Sync Source.
Actually, it's not synchronized in an aspect of streaming protocol because DMxxx chipset and BeBoB can transfer continuous packets in its streaming.
because libffado implements loose checker of packet discontinuity.
I do not understand techinical details, but the sound was perfect even with 192kHz/24bit audio using libffado.
Ditto. libffado works with such broken stream by ignoring its packet index. I guess that you've continued to use your device with uns-ynchronized state for several years because no one reports it.
So if it's only a #define TIMER_SOMETHING value_anything type of things...
I cannot understand what you mean.
Currently, libffado has a bug to fail to switch clock source for usual BeBoB driver. So we have no way to set the source of clock correctly. I've tried to fix it but get stuck deeply into ffado's fault and given up.
As for me, clock source settings, etc., which is written into its EEPROM when powered off, can be occasionally set via the control program by PrismSound either on Windows/OS X, only when it becomes necessary.
Unless fully understanding specifications about your device, you cannot make firm statement about it, I think. The drivers installed in Windows or OS X can set the synchronization when plugging-in.
Regards
Takashi Sakamoto
participants (2)
-
Mike Ood
-
Takashi Sakamoto