presonus StudioLive 24.4.2
hi,
i'm trying to get a presonus StudioLive 24.4.2 up and running:
https://www.presonus.com/products/studiolive-24.4.2
so far i'm partly successful -- looks like the board is automatically detected and supported by the firewire dice module.
however, i'm only offered 16 of the 24 supported audio channels. in the list of soundcards it is merely shown as "studiolive" without further info on the model. i wasn't able to find further info on this board's status with regards to alsa, so if there's documentation on this somewhere, could someone please point me to it?
in case that as of now the studiolive isn't officially supported or the above behavior is due to the fact that so far only the 16.4.2 is known to the module, i'm willing to help as far as i can ;) i hope that already seeing 16 channels is a good point to start and that it's not too hard to make the remaining 8 show up as well...
best regards :: m.eik
Hi,
I'm a developer for ALSA firewire stack.
On Tue, Jun 16, 2020 at 10:11:57AM +0200, m.eik michalke wrote:
i'm trying to get a presonus StudioLive 24.4.2 up and running:
https://www.presonus.com/products/studiolive-24.4.2
so far i'm partly successful -- looks like the board is automatically detected and supported by the firewire dice module.
Thanks for your trial to the device. For my information, would you show your kernel version?
however, i'm only offered 16 of the 24 supported audio channels. in the list of soundcards it is merely shown as "studiolive" without further info on the model. i wasn't able to find further info on this board's status with regards to alsa, so if there's documentation on this somewhere, could someone please point me to it?
I guess that Dice ASIC in your device can process two pairs of isochronous packet streams. In the case, the driver adds two PCM devices to system. I think you saw the first PCM device and it can handle 16 PCM channels. Another can handle the rest 8 channels.
Would you find below procfs nodes and dump their contents?
* /proc/asound/cardX/firewire/dice * /proc/asound/cardX/firewire/formation
Here, the 'X' should be replaced with the one in your system.
in case that as of now the studiolive isn't officially supported or the above behavior is due to the fact that so far only the 16.4.2 is known to the module, i'm willing to help as far as i can ;) i hope that already seeing 16 channels is a good point to start and that it's not too hard to make the remaining 8 show up as well...
Would you get output from '/proc/asound/pcm'?
For example, in the case of M-Audio Profire 610:
$ cat /proc/asound/pcm ... 02-00: DICE : FW610 : playback 1 : capture 1 02-01: DICE : FW610 : playback 1
We can see two PCM devices in the above for playback PCM substream.
Thanks
Takashi Sakamoto
hi,
Am Dienstag, 16. Juni 2020, 14:18:29 CEST schrieb Takashi Sakamoto:
On Tue, Jun 16, 2020 at 10:11:57AM +0200, m.eik michalke wrote:
i'm trying to get a presonus StudioLive 24.4.2 up and running: https://www.presonus.com/products/studiolive-24.4.2
so far i'm partly successful -- looks like the board is automatically detected and supported by the firewire dice module.
Thanks for your trial to the device. For my information, would you show your kernel version?
$ uname -a Linux yrla 5.3.0-59-generic #53~18.04.1-Ubuntu SMP Thu Jun 4 14:58:26 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
however, i'm only offered 16 of the 24 supported audio channels. in the list of soundcards it is merely shown as "studiolive" without further info on the model. i wasn't able to find further info on this board's status with regards to alsa, so if there's documentation on this somewhere, could someone please point me to it?
I guess that Dice ASIC in your device can process two pairs of isochronous packet streams. In the case, the driver adds two PCM devices to system. I think you saw the first PCM device and it can handle 16 PCM channels. Another can handle the rest 8 channels.
i see.
Would you find below procfs nodes and dump their contents?
- /proc/asound/cardX/firewire/dice
- /proc/asound/cardX/firewire/formation
$ cat /proc/asound/cards [...] 4 [StudioLive ]: DICE - StudioLive PreSonus STUDIOLIVE_2442 (serial xxxxxxx) at fw1.0, S400
$ cat /proc/asound/card4/firewire/dice sections: global: offset 10, size 90 tx: offset 100, size 142 rx: offset 242, size 282 ext_sync: offset 524, size 4 unused2: offset 0, size 0 global: owner: ffc1:000100000000 notification: 00000020 nick name: StudioLive clock select: internal 44100 enable: 0 status: locked 44100 ext status: 00000000 sample rate: 44100 version: 1.0.4.0 clock caps: 44100 48000 arx1 arx2 internal clock source names: AES12\SPDIF\AES56\AES78\AES_ANY\ADAT\ADAT_AUX\Word Clock \Unused\Unused\Unused\Unused\Internal\ tx 0: iso channel: -1 audio channels: 16 midi ports: 0 speed: S400 names: Ch 1\Ch 2\Ch 3\Ch 4\Ch 5\Ch 6\Ch 7\Ch 8\Ch 9\Ch 10\Ch 11\Ch 12\Ch 13\Ch 14\Ch 15\Ch 16\ ac3 caps: 00000000 ac3 enable: 00000000 tx 1: iso channel: -1 audio channels: 16 midi ports: 0 speed: S400 names: Ch 17\Ch 18\Ch 19\Ch 20\Ch 21\Ch 22\Ch 23\Ch 24\Auxiliary Ch 25\Auxiliary Ch 26\Auxiliary Ch 27\Auxiliary Ch 28\Auxiliary Ch 29\Auxiliary Ch 30\Auxiliary Ch 31\Auxiliary Ch 32\ ac3 caps: 00000000 ac3 enable: 00000000 rx 0: iso channel: -1 sequence start: 0 audio channels: 16 midi ports: 0 names: Ch 1\Ch 2\Ch 3\Ch 4\Ch 5\Ch 6\Ch 7\Ch 8\Ch 9\Ch 10\Ch 11\Ch 12\Ch 13\Ch 14\Ch 15\Ch 16\ ac3 caps: 00000000 ac3 enable: 00000000 rx 1: iso channel: -1 sequence start: 0 audio channels: 10 midi ports: 0 names: Ch 17\Ch 18\Ch 19\Ch 20\Ch 21\Ch 22\Ch 23\Ch 24\2TrackIn L\2TrackIn R \ ac3 caps: 00000000 ac3 enable: 00000000 ext status: clock source: internal locked: 1 rate: 44100 adat user data: -
$ cat /proc/asound/card4/firewire/formation Output stream from unit: low middle high MIDI Tx 0: 16 0 0 0 Tx 1: 16 0 0 0 Input stream to unit: low middle high Rx 0: 16 0 0 0 Rx 1: 10 0 0 0
in case that as of now the studiolive isn't officially supported or the above behavior is due to the fact that so far only the 16.4.2 is known to the module, i'm willing to help as far as i can ;) i hope that already seeing 16 channels is a good point to start and that it's not too hard to make the remaining 8 show up as well...
Would you get output from '/proc/asound/pcm'?
$ cat /proc/asound/pcm [...] 04-00: DICE : StudioLive : playback 1 : capture 1 04-01: DICE : StudioLive : playback 1 : capture 1
all looks to me like you were right. IIUC the board provides a total of 32 output channels and 26 for input. does this mean the device is already fully recognized and functional? can alsa be configured to provide all channels as one "sound card" so they become available in, say, ardour?
thank you & best regards :: m.eik
Hi,
Thanks for the information.
On Wed, Jun 17, 2020 at 03:00:49PM +0200, m.eik michalke wrote:
in case that as of now the studiolive isn't officially supported or the above behavior is due to the fact that so far only the 16.4.2 is known to the module, i'm willing to help as far as i can ;) i hope that already seeing 16 channels is a good point to start and that it's not too hard to make the remaining 8 show up as well...
Would you get output from '/proc/asound/pcm'?
$ cat /proc/asound/pcm [...] 04-00: DICE : StudioLive : playback 1 : capture 1 04-01: DICE : StudioLive : playback 1 : capture 1
all looks to me like you were right. IIUC the board provides a total of 32 output channels and 26 for input. does this mean the device is already fully recognized and functional? can alsa be configured to provide all channels as one "sound card" so they become available in, say, ardour?
ALSA dice driver is functional expectedly in the case, with the inconvenience that you noted... The driver adds two pair of PCM playback/capture device so that each of them handles corresponding single isochronous packet streaming.
I suggest users to use 'alsa_in' and 'alsa_out' in jackd session. Two pairs of PCM device (hw:x,0 and hw:x,1) need to be handled for all of PCM channels. I'm sorry but at present total channels are not available via one pair of PCM device.
Well, this is a request from me. In IEEE 1394 bus, each device has 'configuration ROM' which the other device can read. Linux FireWire subsystem read it for device detection. I gather the ROM image[1] for better detection and would I request you to send the ROM image to me by following below instruction?
After detected, FireWire character device corresponding to your device is added to Linux system. Typically it's '/dev/fw1'. At the same time, the ROM image is served via node on sysfs. In the case of '/dev/fw1', it's '/sys/bus/firewire/devices/fw1/config_rom'. I'd like you to redirect its content to file and send it to me (or send pull request by github service).
[1] https://github.com/takaswie/am-config-roms/
Thanks
Takashi Sakamoto
hi,
Am Mittwoch, 17. Juni 2020, 15:37:04 CEST schrieb Takashi Sakamoto:
$ cat /proc/asound/pcm [...] 04-00: DICE : StudioLive : playback 1 : capture 1 04-01: DICE : StudioLive : playback 1 : capture 1
I suggest users to use 'alsa_in' and 'alsa_out' in jackd session. Two pairs of PCM device (hw:x,0 and hw:x,1) need to be handled for all of PCM channels. I'm sorry but at present total channels are not available via one pair of PCM device.
ok, could a hack like this also help me out?
http://www.jrigg.co.uk/linuxaudio/ice1712multi.html
Well, this is a request from me. In IEEE 1394 bus, each device has 'configuration ROM' which the other device can read. Linux FireWire subsystem read it for device detection. I gather the ROM image[1] for better detection and would I request you to send the ROM image to me
sent to you off-list. hth.
viele grüße :: m.eik
Hi,
On Wed, Jun 17, 2020 at 06:12:48PM +0200, m.eik michalke wrote:
hi,
Am Mittwoch, 17. Juni 2020, 15:37:04 CEST schrieb Takashi Sakamoto:
$ cat /proc/asound/pcm [...] 04-00: DICE : StudioLive : playback 1 : capture 1 04-01: DICE : StudioLive : playback 1 : capture 1
I suggest users to use 'alsa_in' and 'alsa_out' in jackd session. Two pairs of PCM device (hw:x,0 and hw:x,1) need to be handled for all of PCM channels. I'm sorry but at present total channels are not available via one pair of PCM device.
ok, could a hack like this also help me out?
Yep, the PCM multi plugin in alsa-lib seems to be available as well.
Well, this is a request from me. In IEEE 1394 bus, each device has 'configuration ROM' which the other device can read. Linux FireWire subsystem read it for device detection. I gather the ROM image[1] for better detection and would I request you to send the ROM image to me
sent to you off-list. hth.
I added it at below commit: https://github.com/takaswie/am-config-roms/commit/38819873e51d
From my curiousity, would I ask you extra check in system log (like
journalctl -k)? ALSA Dice driver supports TCAT protocol extension, and it firstly attempts to detect it for all of devices without explicit flags (in your case). If the device doesn't support the extension, the attempt fails and we can see below log:
``` kernel: snd_dice fw1.0: transaction failed: timeout ```
I'm glad if you reports whether to see the above or not.
Thanks
Takashi Sakamoto
hi,
Am Donnerstag, 18. Juni 2020, 01:32:13 CEST schrieb Takashi Sakamoto:
ok, could a hack like this also help me out?
Yep, the PCM multi plugin in alsa-lib seems to be available as well.
that's encouraging. now i only have to figure that out ;) never had to deal with .asoundrc before (which is testament to the hard work of all of you, thx!).
From my curiousity, would I ask you extra check in system log (like journalctl -k)? ALSA Dice driver supports TCAT protocol extension, and it firstly attempts to detect it for all of devices without explicit flags (in your case). If the device doesn't support the extension, the attempt fails and we can see below log:
kernel: snd_dice fw1.0: transaction failed: timeout
here's what i see in journalctl -k when the device is being plugged in:
kernel: firewire_ohci 0000:05:00.0: isochronous cycle inconsistent kernel: firewire_core 0000:05:00.0: created device fw1: GUID 000a920404af7744, S400 kernel: firewire_core 0000:05:00.0: phy config: new root=ffc1, gap_count=5 kernel: firewire_core 0000:05:00.0: IRM is not 1394a compliant, making local node (ffc0) root kernel: firewire_core 0000:05:00.0: phy config: new root=ffc0, gap_count=5 kernel: snd_dice fw1.0: transaction failed: address error
let me know if you need anything else.
viele grüße :: m.eik
On Thu, Jun 18, 2020 at 12:14:41PM +0200, m.eik michalke wrote:
hi,
Am Donnerstag, 18. Juni 2020, 01:32:13 CEST schrieb Takashi Sakamoto:
ok, could a hack like this also help me out?
Yep, the PCM multi plugin in alsa-lib seems to be available as well.
that's encouraging. now i only have to figure that out ;) never had to deal with .asoundrc before (which is testament to the hard work of all of you, thx!).
The domain specific language in alsa-lib is not so easy to understand and control. The result affects to all of ALSA applications like pulseaudio. It's better to use alsa_in/alsa_out for the purpose to avoid unexpected influences, IMO...
From my curiousity, would I ask you extra check in system log (like journalctl -k)? ALSA Dice driver supports TCAT protocol extension, and it firstly attempts to detect it for all of devices without explicit flags (in your case). If the device doesn't support the extension, the attempt fails and we can see below log:
kernel: snd_dice fw1.0: transaction failed: timeout
here's what i see in journalctl -k when the device is being plugged in:
kernel: firewire_ohci 0000:05:00.0: isochronous cycle inconsistent kernel: firewire_core 0000:05:00.0: created device fw1: GUID 000a920404af7744, S400 kernel: firewire_core 0000:05:00.0: phy config: new root=ffc1, gap_count=5 kernel: firewire_core 0000:05:00.0: IRM is not 1394a compliant, making local node (ffc0) root kernel: firewire_core 0000:05:00.0: phy config: new root=ffc0, gap_count=5 kernel: snd_dice fw1.0: transaction failed: address error
Thanks. Now we confirm that the device doesn't support the protocol extension. (And I realize there're two cases; the device doesn't just respond, or returns RCODE_ADDRESS_ERROR.)
let me know if you need anything else.
Hm. If you hear sound with periodical noise, please report it. The dice-based device is known as one of the devices to require drivers for media clock recovery. In detail, please read the other case[1].
[1] https://mailman.alsa-project.org/pipermail/alsa-devel/2020-May/167413.html
Regards
Takashi Sakamoto
hi,
Am Donnerstag, 18. Juni 2020, 16:06:23 CEST schrieb Takashi Sakamoto:
The domain specific language in alsa-lib is not so easy to understand and control. The result affects to all of ALSA applications like pulseaudio. It's better to use alsa_in/alsa_out for the purpose to avoid unexpected influences, IMO...
i'll probably try both, and maybe FFADO as well. my goal is a solution that reliably works when we (my band) start recording again.
it's a pity alsa currently can't transparently take care of this. it looks like basically everything is in place, but you're left with that IKEA feeling, a collection of parts and a construction manual in your hand. when you plug in a 24-channel sound card and alsa successfully detects all of them, as a user you'd expect the single card that is actually offered by alsa to just provide all those channels. that the board internally might use mutliple chips is something you shouldn't have to worry about/figure out. i'd argue there's exactly one configuration that everyone would expect to get from a board like this, and that's all channels in one device. it would do no harm to automatically configure it like this by default. should someone actually prefer to have split devices for whatever use case, IMHO that should be the exception to be configured manually.
let me know if you need anything else.
Hm. If you hear sound with periodical noise, please report it. The dice-based device is known as one of the devices to require drivers for media clock recovery. In detail, please read the other case[1].
i'll check it out. we have just bought the board second-hand to replace a phonic helixboard that broke after ~10 years in our studio. i'm just starting to get familiar with it and haven't recorded much more than a proof of basic functionality yet.
viele grüße :: m.eik
participants (2)
-
m.eik michalke
-
Takashi Sakamoto