Hi Daniel,

thanks a lot for your reply.

> Sorry for catching up so late. Is this issue solved already?
>
> On 28.02.2012 00:43, Joachim Gahl wrote:
> > I would like to ask for some help with an USB audio class 2 device.
>
> [...]
>
> > I am running openSUSE 11.4, 64bit (Kernel 2.6.37-0.11 desktop). ALSA
> > version is 1.0.24 according to YAST but alsamixer reports driver
> > version 1.0.23.
> > 
> > When I connect the Axe-Fx II to my systems the MIDI interface appears
> > and works. Problem is the audio interface. /var/log/messages reports
> > 
> > ALSA format.c:287: parse_audio_format_rates_v2(): unable to retrieve
> > number of sample rates (clock 40) ALSA format.c:287:
> > parse_audio_format_rates_v2(): unable to retrieve number of sample
> > rates (clock 5)
> > 
> > and no capture or playback device can be found.
> > 
> > I emailed the manufacturer and they told me that the Axe-Fx II does
> > not respond to GetSampleFrequencyRange requests. So I suspect this
> > might be the reason for the error messages.
>
> Which violates the spec IIRC. How should the driver know about
> configurable sample rates then?
>
> I can send you a patch that adds a quirk to hard-code the sample rates
> for this card, but I would need to known which ones are valid.
>
>
> Daniel

Unfortunately I don't know how to appropiately mail a follow-up to your
posting. So this post might not show up as a direct reply. Apologies for
that.

But to answer your questions:

My issue is not solved. In the meantime I switched to openSUSE 12.1
(kernel 3.1.9-1.4 desktop, 64bit). ALSA version reported by alsamixer is
1.0.24.

I also tried to write a quirk, put the following lines into
quirk-table.h and recompiled.

    /*
     * Fractal Audio Systems devices
     */
    {
        USB_DEVICE(0x2466, 0x8003),
        .driver_info = (unsigned long) & (const struct
    snd_usb_audio_quirk) {
            .vendor_name = "Fractal Audio Systems",
            .product_name = "AXE-FX II",
            .ifnum = QUIRK_ANY_INTERFACE,
            .type = QUIRK_COMPOSITE,
            .data = & (const struct snd_usb_audio_quirk[]) {
                {
                    .ifnum = 0,
                    .type = QUIRK_AUDIO_STANDARD_MIXER
                },
                {
                    .ifnum = 1,
                    .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                    .data = & (const struct audioformat) {
                        .formats = SNDRV_PCM_FMTBIT_S24_3LE,
                        .channels = 2,
                        .iface = 1,
                        .altsetting = 1,
                        .altset_idx = 1,
                        .attributes = 0,
                        .endpoint = 0x02,
                        .ep_attr = 0x05,
                        .maxpacksize = 0x002a,
                        .rates = SNDRV_PCM_RATE_CONTINUOUS,
                        .rate_min = 48000,
                        .rate_max = 48000
                    }
                },
                {
                    .ifnum = 2,
                    .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                    .data = & (const struct audioformat) {
                        .formats = SNDRV_PCM_FMTBIT_S24_3LE,
                        .channels = 4,
                        .iface = 2,
                        .altsetting = 1,
                        .altset_idx = 1,
                        .attributes = 0,
                        .endpoint = 0x86,
                        .ep_attr = 0x05,
                        .maxpacksize = 0x0054,
                        .rates = SNDRV_PCM_RATE_CONTINUOUS,
                        .rate_min = 48000,
                        .rate_max = 48000
                    }
                },
                {
                    .ifnum = 3,
                    .type = QUIRK_MIDI_STANDARD_INTERFACE
                },
                {
                    .ifnum = -1
                }
            }
        }
    },



As soon as the device is connected in /var/log/messages now appears:

    ... kernel: [ 6183.427373] ALSA pcm.c:343 cannot set format: format
    = 0x20, rate = 48000, channels = 2
    ... pulseaudio[2803]: [pulseaudio] module-alsa-card.c: Failed to
    find a working profile.
    ... pulseaudio[2803]: [pulseaudio] module.c: Failed to load module
    "module-alsa-card" (argument: "device_id="3"
    name="usb-Fractal_Audio_Systems_AXE-FX_II-00-II"
    card_name="alsa_card.usb-Fractal_Audio_Systems_AXE-FX_II-00-II"
    namereg_fail=false tsched=yes ignore_dB=no deferred_volume=yes
    card_properties="module-udev-detect.discovered=1""): initialization
    failed.
    ... pulseaudio[2803]: [pulseaudio] module-udev-detect.c: Tried to
    configure
    /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/sound/card3 
(alsa_card.usb-Fractal_Audio_Systems_AXE-FX_II-00-II)
    more often than 5 times in 10s
    ... pulseaudio[2803]: [pulseaudio] module.c: Failed to load module
    "module-alsa-card" (argument: "device_id="3"
    name="usb-Fractal_Audio_Systems_AXE-FX_II-00-II"
    card_name="alsa_card.usb-Fractal_Audio_Systems_AXE-FX_II-00-II"
    namereg_fail=false tsched=yes ignore_dB=no deferred_volume=yes
    card_properties="module-udev-detect.discovered=1""): initialization
    failed. 


And when I try to record with arecord I get the following:

    arecord -c4 -f S24_3LE -r 48000 -d 10 -D plughw:3,0 test.wav
    Aufnahme: WAVE 'test.wav' : Signed 24 bit Little Endian in 3bytes,
    Rate: 48000 Hz, 4 Kanäle
    arecord: set_params:1137: Fehler beim Setzen der Hardware-Parameter:
    ACCESS:  RW_INTERLEAVED
    FORMAT:  S24_3LE
    SUBFORMAT:  STD
    SAMPLE_BITS: 24
    FRAME_BITS: 96
    CHANNELS: 4
    RATE: 48000
    PERIOD_TIME: 125000
    PERIOD_SIZE: 6000
    PERIOD_BYTES: 72000
    PERIODS: 4
    BUFFER_TIME: 500000
    BUFFER_SIZE: 24000
    BUFFER_BYTES: 288000
    TICK_TIME: 0


I would be very glad, if you could have a look at my quirk. Any help is
highly appreciated.

Joachim


P.S. The only sample valid rate for the Axe-FX II is 48000 Hz at 24bit.

------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Alsa-user mailing list
Alsa-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to