Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Sep 2009 20:15:19 +0000
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        firewire@freebsd.org
Subject:   FA-101 audio interface support
Message-ID:  <20090921201518.GA10574@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
Hi there,

I've just bought Roland FA-101 external firewire audio interface box to
start experimenting with multichannel sound processing on my FreeBSD
laptop (NEC Versa S950).  7.2-STABLE runs quite nicely on it, and sees
FW host controller (per pciconf -lv):

fwohci0@pci0:6:7:2:     class=0x0c0010 card=0x83191033 chip=0x8032104c rev=0x00 hdr=0x00
    vendor     = 'Texas Instruments (TI)'
    device     = 'OHCI Compliant IEEE-1394 FireWire Controller'
    class      = serial bus
    subclass   = FireWire

My intention (and ultimate goal for now) is to port ffado.org project
code to our beloved FreeBSD.  However, after I kldload firewire.ko and
connect FA-101, I see the following in dmesg:

fwohci0: <1394 Open Host Controller Interface> mem
0xb0117000-0xb01177ff,0xb0110000-0xb0113fff irq 18 at device 7.2 on pci6
fwohci0: [FILTER]
fwohci0: OHCI version 1.0 (ROM=1)
fwohci0: No. of Isochronous channels is 4.
fwohci0: EUI64 00:c0:9f:00:00:d5:f6:a1
fwohci0: Phy 1394a available S400, 2 ports.
fwohci0: Link S400, max_rec 2048 bytes.
firewire0: <IEEE1394(FireWire) bus> on fwohci0
fwohci0: Initiate bus reset
fwohci0: BUS reset
fwohci0: node_id=0xc000ffc0, gen=1, CYCLEMASTER mode
firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
firewire0: bus manager 0 (me)
fwohci0: BUS reset
fwohci0: node_id=0x8000ffc0, gen=3, non CYCLEMASTER mode
firewire0: 2 nodes, maxhop <= 1, cable IRM = 0 (me)
firewire0: root node is not cycle master capable
firewire0: bus manager 0 (me)
fwohci0: too many cycle lost, no cycle master presents?
fwohci0: txd err= 3 miss Ack err
fwohci0: txd err= 3 miss Ack err
fwohci0: txd err= 3 miss Ack err

These messages do not look very exciting, and apparently my box does not
see the device afterwards:

# fwcontrol -t
crc_len: 3 generation:14 node_count:1 sid_count:1
id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
00    1       5  S400     0    1    0W     -     -         1    0

I've tried several things; e.g. setting gapcount to 8, but fwcontrol -t
shows the following lines for couple of seconds, and than it disappears
(rapid repeat of fwcontrol -t command output below):

# fwcontrol -t
crc_len: 4 generation:19 node_count:2 sid_count:2
id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
00    1      63  S400     0    0   -9W     -     P         1    0
01    1       8  S400     0    1    0W     C     -         0    0
# fwcontrol -t
crc_len: 4 generation:19 node_count:2 sid_count:2
id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
00    1      63  S400     0    0   -9W     -     P         1    0
01    1       8  S400     0    1    0W     C     -         0    0
# fwcontrol -t
crc_len: 4 generation:20 node_count:2 sid_count:2
id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
00    1      63  S400     0    1   15W     -     P         1    0
01    1       5  S400     0    1    0W     C     -         0    0
# fwcontrol -t
crc_len: 4 generation:20 node_count:2 sid_count:2
id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
00    1      63  S400     0    1   15W     -     P         1    0
01    1       5  S400     0    1    0W     C     -         0    0
# fwcontrol -t
crc_len: 3 generation:22 node_count:1 sid_count:1
id link gap_cnt speed delay cIRM power port0 port1 port2 ini more
00    1       5  S400     0    1    0W     -     -         1

along with the following dmesg output that might be relevant:

fw_rcv: unknown response RRESQ(6) src=0x3f tl=0x19 rt=1 data=0x6ed42504
firewire0: split transaction timeout: tl=0x19 flag=0x04
send: dst=0x00 tl=0x19 rt=0 tcode=0x4 pri=0x0 src=0x000
fw_rcv: unknown response RRESQ(6) src=0x3f tl=0x1a rt=1 data=0x6ed42504
firewire0: split transaction timeout: tl=0x1a flag=0x04
send: dst=0x00 tl=0x1a rt=0 tcode=0x4 pri=0x0 src=0x000
fw_rcv: unknown response RRESQ(6) src=0x3f tl=0x1b rt=1 data=0x6ed42504
firewire0: split transaction timeout: tl=0x1b flag=0x04
send: dst=0x00 tl=0x1b rt=0 tcode=0x4 pri=0x0 src=0x000
fwohci0: BUS reset
fwohci0: node_id=0xc000ffc1, gen=22, CYCLEMASTER mode
firewire0: 2 nodes, maxhop <= 1, cable IRM = 1 (me)
firewire0: bus manager 1 (me)
fwohci0: BUS reset
fwohci0: node_id=0xc000ffc0, gen=23, CYCLEMASTER mode
firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
firewire0: bus manager 0 (me)
fwohci0: txd err= 3 miss Ack err
fwohci0: txd err= 3 miss Ack err

I've been browsing through fbsd-fw@ archives tonight and discovered
several patches by sbruno@ that might address [some of the] issues I'm
seeing.  Sean (and anyone else, of course), can you give me some hand on
the subject?  I'm happy to provide any debug info, glad to test patches,
etc.  Root access to my laptop is also quite possible, shall it be needed.

Thanks.

./danfe



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090921201518.GA10574>