obexapp outgoing problem

Maksim Yevmenkin maksim.yevmenkin at gmail.com
Mon Feb 23 13:43:00 PST 2009


2009/2/23 Pav Lucistnik <pav at freebsd.org>:
> Maksim Yevmenkin píše v po 23. 02. 2009 v 10:49 -0800:
>> Hi Pav,
>>
>> > I'm having troubles sending files to phone over obexapp, similar to
>> >
>> > http://www.freebsd.org/cgi/query-pr.cgi?pr=128297
>> >
>> > except this time it's on 7-STABLE and the messages goes about ubt bulk
>> > transfer having SHORT_XFER error first and then TIMEOUT.
>> >
>> > The box panics inside UHCI code, or just hangs.
>> >
>> > What can I do to help it?
>>
>> is that a new behavior? or was it always like that? since you have
>> mentioned ng_ubt(4), i assume you are using usb1 (and not HPS's usb2)
>> stack, right? the only big change that went into ng_ubt(4) (long time
>> ago) is support for isoc. transfers. however, this change was not
>> mfc'd, and you said you are running 7-stable, so this can not be it.
>>
>> if it was working before then i would try to revert back to the time
>> when it was working, then incrementally updating trying to pinpoint
>> time frame when it stopped working. once you know the time frame look
>> closely for commits that could have affected it.
>
> It's 7-STABLE so OLDUSB. I don't know if it's new behaviour, this is
> first time I tried sending files over Bluetooth to the phone, instead of
> mailing them.
>
> PS: other way (phone -> PC) using obexapp -s works flawlessly.

ok, could you please try the following patch. its cut-and-paste so you
may need redo it manually (its simple enough).

diff -u10 ng_ubt.c.orig ng_ubt.c
--- ng_ubt.c.orig       2007-07-12 19:19:51.000000000 -0700
+++ ng_ubt.c    2009-02-23 13:39:32.000000000 -0800
@@ -1378,21 +1378,21 @@

        m_copydata(m, 0, m->m_pkthdr.len, sc->sc_bulk_out_buffer);

        /* Initialize a bulk-out USB transfer and then schedule it */
        usbd_setup_xfer(
                        sc->sc_bulk_out_xfer,
                        sc->sc_bulk_out_pipe,
                        (usbd_private_handle) sc->sc_node,
                        sc->sc_bulk_out_buffer,
                        m->m_pkthdr.len,
-                       USBD_NO_COPY,
+                       USBD_FORCE_SHORT_XFER | USBD_NO_COPY,
                        USBD_DEFAULT_TIMEOUT, /* XXX */
                        ubt_bulk_out_complete);

        NG_NODE_REF(sc->sc_node);

        status = usbd_transfer(sc->sc_bulk_out_xfer);
        if (status != USBD_NORMAL_COMPLETION && status != USBD_IN_PROGRESS) {
                NG_UBT_ERR(
 "%s: %s - Could not start bulk-out transfer. %s (%d)\n",
                        __func__, device_get_nameunit(sc->sc_dev),
usbd_errstr(status),


===

thanks,
max


More information about the freebsd-bluetooth mailing list