fwcontrol -R issues with several cameras

Hidetoshi Shimokawa simokawa at FreeBSD.ORG
Thu Mar 22 15:45:33 UTC 2007


I found a  trivial bug in fwcontrol.c for '-M' option.

RCS file: /home/ncvs/src/usr.sbin/fwcontrol/fwcontrol.c,v retrieving
revision 1.23
diff -u -r1.23 fwcontrol.c
--- fwcontrol.c 26 Oct 2006 22:33:38 -0000      1.23
+++ fwcontrol.c 22 Mar 2007 15:37:25 -0000
@@ -764,7 +764,7 @@
                                errx(EX_USAGE, "unrecognized method: %s",
                                    optarg);
                        }
-                       break;
+                       /* fall through */
                case 'R':
                        open_dev(&fd, devbase);
                        if (recvfn == NULL) /* guess... */

Without this patch,  'fwcontrol -Md' will exit immediately.
But I am not sure whether this fix your problem.

On 3/23/07, Eric Anderson <anderson at centtech.com> wrote:
> On 03/22/07 09:18, Hidetoshi Shimokawa wrote:
> > I don't have no DV and MPEG TS camera now and I can't test
> > by myself. I really appreciate hardware donation ;-)
>
> I wish I could donate one to you.  Is there more I can do on my end to
> debug it?
>
> > Anyway,  "fwohci0: Isochronous receive err 8402(long)" indicates
> > that  packet is longer than receive buffer.
> > How about increasing PSIZE in /usr/src/usr.sbin/fwcontrol/fwmpegts.c?
> > Petr Holub may know better than me about MPEG TS.
>
> I tried doubling it, and that did not help (same log error, different
> fwcontrol errors).  I then also tried making RBUFSIZE bigger, no help.
>
> > Do you also have problem with DV(not MPEG) stream?
>
> Yes, same messages in logs, but different error from fwcontrol:
>
> # fwcontrol -R test
> Detected DV format on input.
> fwcontrol: read failed: Input/output error
>
> Mar 22 09:52:56 neutrino kernel: fwohci0: BUS reset
> Mar 22 09:52:56 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=2,
> CYCLEMASTER mode
> Mar 22 09:52:56 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> IRM = 1 (me)
> Mar 22 09:52:56 neutrino kernel: firewire0: bus manager 1 (me)
> Mar 22 09:52:56 neutrino kernel: firewire0: New S100 device
> ID:0000850001269c51
> Mar 22 09:53:19 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> Mar 22 09:53:23 neutrino last message repeated 3 times
> Mar 22 09:53:26 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> Mar 22 09:53:27 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> Mar 22 09:53:51 neutrino kernel: fwohci0: BUS reset
> Mar 22 09:53:51 neutrino kernel: fwohci0: node_id=0xc800ffc0, gen=3,
> CYCLEMASTER mode
> Mar 22 09:53:51 neutrino kernel: firewire0: 1 nodes, maxhop <= 0, cable
> IRM = 0 (me)
> Mar 22 09:53:51 neutrino kernel: firewire0: bus manager 0 (me)
>
>
>
> > On 3/22/07, Eric Anderson <anderson at centtech.com> wrote:
> >> For quite some time now, I (and many others) have had problems getting
> >> fwcontrol -R to work successfully.  The recent commits in the firewire
> >> area have inspired me to try it again.  It still does not function for
> >> me (for at least one camera), but is more consistent now, and not giving
> >> different errors randomly as was the case before.
> >>
> >> I'd really like to get this working, as it's one of the only reasons I
> >> still boot into Windows these days.
> >>
> >> Any ideas?  I'm running -CURRENT as of a few days ago.
> >>
> >>
> >> Eric
> >>
> >>
> >> Here's what I did:
> >>
> >> # power on camera:
> >> Mar 22 08:04:17 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:04:17 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=2,
> >> CYCLEMASTER mode
> >> Mar 22 08:04:17 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:04:17 neutrino kernel: firewire0: bus manager 1 (me)
> >> Mar 22 08:04:17 neutrino kernel: fwohci0: txd err= 3 miss Ack err
> >> Mar 22 08:04:17 neutrino kernel: firewire0: bus_explore node=0
> >> addr=0x400 resp=22
> >> Mar 22 08:04:18 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:04:18 neutrino kernel: fwohci0: node_id=0xc800ffc0, gen=3,
> >> CYCLEMASTER mode
> >> Mar 22 08:04:18 neutrino kernel: firewire0: 1 nodes, maxhop <= 0, cable
> >> IRM = 0 (me)
> >> Mar 22 08:04:18 neutrino kernel: firewire0: bus manager 0 (me)
> >> Mar 22 08:04:21 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:04:21 neutrino kernel: fwohci0: phy int
> >> Mar 22 08:04:21 neutrino last message repeated 7 times
> >> Mar 22 08:04:21 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=12,
> >> CYCLEMASTER mode
> >> Mar 22 08:04:21 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:04:21 neutrino kernel: firewire0: bus manager 1 (me)
> >> Mar 22 08:04:21 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:04:21 neutrino kernel: fwohci0: node_id=0xc800ffc0, gen=13,
> >> CYCLEMASTER mode
> >> Mar 22 08:04:21 neutrino kernel: firewire0: 1 nodes, maxhop <= 0, cable
> >> IRM = 0 (me)
> >> Mar 22 08:04:21 neutrino kernel: firewire0: bus manager 0 (me)
> >> Mar 22 08:04:22 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:04:22 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=14,
> >> CYCLEMASTER mode
> >> Mar 22 08:04:22 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:04:22 neutrino kernel: firewire0: bus manager 1 (me)
> >> Mar 22 08:04:22 neutrino kernel: firewire0: New S100 device
> >> ID:0000850001269c51
> >>
> >>
> >> # fwcontrol -R test
> >> Detected MPEG TS format on input.
> >> fwcontrol: unknown format 0x1a
> >>
> >> Mar 22 08:05:37 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> >>
> >> # power off camera:
> >>
> >> Mar 22 08:06:41 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:06:41 neutrino kernel: fwohci0: node_id=0xc800ffc0, gen=15,
> >> CYCLEMASTER mode
> >> Mar 22 08:06:41 neutrino kernel: firewire0: 1 nodes, maxhop <= 0, cable
> >> IRM = 0 (me)
> >> Mar 22 08:06:41 neutrino kernel: firewire0: bus manager 0 (me)
> >>
> >>
> >> # try #2:
> >>
> >> # power on camera:
> >> Mar 22 08:10:23 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:10:23 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=16,
> >> CYCLEMASTER mode
> >> Mar 22 08:10:23 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:10:23 neutrino kernel: firewire0: bus manager 1 (me)
> >> Mar 22 08:10:24 neutrino kernel: fwohci0: txd err= 3 miss Ack err
> >> Mar 22 08:10:24 neutrino kernel: firewire0: bus_explore node=0
> >> addr=0x400 resp=22
> >> Mar 22 08:10:24 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:10:24 neutrino kernel: fwohci0: node_id=0xc800ffc0, gen=17,
> >> CYCLEMASTER mode
> >> Mar 22 08:10:24 neutrino kernel: firewire0: 1 nodes, maxhop <= 0, cable
> >> IRM = 0 (me)
> >> Mar 22 08:10:24 neutrino kernel: firewire0: bus manager 0 (me)
> >> Mar 22 08:10:27 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:10:27 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=18,
> >> CYCLEMASTER mode
> >> Mar 22 08:10:27 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:10:27 neutrino kernel: firewire0: bus manager 1 (me)
> >>
> >> # using -M makes no difference
> >> # try a bus reset:
> >>
> >> Mar 22 08:12:03 neutrino kernel: fwohci0: Initiate bus reset
> >> Mar 22 08:12:03 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:12:03 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=19,
> >> CYCLEMASTER mode
> >> Mar 22 08:12:03 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:12:03 neutrino kernel: firewire0: bus manager 1 (me)
> >>
> >> # same problem:
> >>
> >> Mar 22 08:12:21 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> >>
> >> # now tried the try_bmr=0, and a reset:
> >>
> >> Mar 22 08:13:18 neutrino kernel: fwohci0: Initiate bus reset
> >> Mar 22 08:13:18 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:13:18 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=20,
> >> CYCLEMASTER mode
> >> Mar 22 08:13:18 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:13:18 neutrino kernel: fw_rcv: unknown response RRESQ(6)
> >> src=0xffc0 tl=0x32 rt=1 data=0xbbe70404
> >> Mar 22 08:13:18 neutrino kernel: try ad-hoc work around!!
> >> Mar 22 08:13:18 neutrino kernel: no use...
> >>
> >> # same errors.
> >>
> >> # with firewire_debug sysctl set to 1, doing a reset shows:
> >>
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: Initiate bus reset
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: fwphy_rddata: 0x1 loop=1, retry=0
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: fwphy_rddata: 0x1 loop=1, retry=0
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: node_id=0xc800ffc1, gen=27,
> >> CYCLEMASTER mode
> >> Mar 22 08:16:23 neutrino kernel: firewire0: 2 nodes, maxhop <= 1, cable
> >> IRM = 1 (me)
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: fw_set_bus_manager: 1->1 (loop=0)
> >> Mar 22 08:16:23 neutrino kernel: firewire0: bus manager 1 (me)
> >> Mar 22 08:16:23 neutrino kernel: send phy_config root_node=1 gap_count=5
> >> Mar 22 08:16:23 neutrino kernel: fwohci0: start AT DMA status=14
> >> Mar 22 08:16:23 neutrino kernel: node0: explore addr=0x400
> >> Mar 22 08:16:23 neutrino kernel: node0: callback addr=0x400
> >> Mar 22 08:16:23 neutrino kernel: node0: explore addr=0x40c
> >> Mar 22 08:16:23 neutrino kernel: node0: callback addr=0x40c
> >> Mar 22 08:16:23 neutrino kernel: node0: explore addr=0x410
> >> Mar 22 08:16:23 neutrino kernel: node0: callback addr=0x410
> >> Mar 22 08:16:23 neutrino kernel: node0: explore addr=0x400
> >> Mar 22 08:16:23 neutrino kernel: node0: callback addr=0x400
> >> Mar 22 08:16:23 neutrino kernel: bus_explore done
> >>
> >> # and doing the -R with fwcontrol results in:
> >>
> >> Detected MPEG TS format on input.
> >> fwcontrol: unknown format 0x1a
> >>
> >> # and in dmesg:
> >>
> >> Mar 22 08:17:07 neutrino kernel: start IR DMA 0x40000011
> >> Mar 22 08:17:07 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> >> Mar 22 08:17:08 neutrino kernel: start IR DMA 0x40000002
> >> Mar 22 08:17:08 neutrino kernel: fwohci0: Isochronous receive err 8402(long)
> >> Mar 22 08:17:09 neutrino last message repeated 2 times
> >> ^?
> >>
> >> # and shutting down:
> >>
> >> Mar 22 08:17:18 neutrino kernel: fwohci0: BUS reset
> >> Mar 22 08:17:18 neutrino kernel: fwohci0: node_id=0xc800ffc0, gen=28,
> >> CYCLEMASTER mode
> >> Mar 22 08:17:18 neutrino kernel: firewire0: 1 nodes, maxhop <= 0, cable
> >> IRM = 0 (me)
> >> Mar 22 08:17:18 neutrino kernel: fwohci0: fw_set_bus_manager: 0->0 (loop=0)
> >> Mar 22 08:17:18 neutrino kernel: firewire0: bus manager 0 (me)
> >> Mar 22 08:17:18 neutrino kernel: send phy_config root_node=-1 gap_count=5
> >> Mar 22 08:17:18 neutrino kernel: fwohci0: start AT DMA status=3
> >> Mar 22 08:17:18 neutrino kernel: bus_explore done
> >>
> >>
> >>
> >> --
> >> ------------------------------------------------------------------------
> >> Eric Anderson        Sr. Systems Administrator        Centaur Technology
> >> An undefined problem has an infinite number of solutions.
> >> ------------------------------------------------------------------------
> >>
> >>
> >
> >
>
>
> --
> ------------------------------------------------------------------------
> Eric Anderson        Sr. Systems Administrator        Centaur Technology
> An undefined problem has an infinite number of solutions.
> ------------------------------------------------------------------------
>
>


-- 
/\ Hidetoshi Shimokawa
\/  simokawa at FreeBSD.ORG


More information about the freebsd-firewire mailing list