Ray,

[...]

hcidump gives the following when I try to transfer an image from my
LG U8360 phone:

[...]

 > ACL data: handle 0x0007 flags 0x02 dlen 25
    L2CAP(d): cid 0x41 len 21 [psm 1]
        SDP SSA Req: tid 0x1 len 0x10
          pat uuid-16 0x1106 (OBEXObjTrnsf)
          max 0x2a0
          aid(s) 0x0000 - 0xffff
          cont 00
< ACL data: handle 0x0007 flags 0x02 dlen 15
    L2CAP(d): cid 0x40 len 11 [psm 1]
        SDP SSA Rsp: tid 0x1 len 0x6
          cnt 0x3
          cont 00

it appears that your lg phone wants to use "obex file transfer" service to transfer the picture. obexapp in server mode only registers "obex object push" service.

so, your lg phone does not find the service it looks for and bails out.

i have attached untested patch for obexapp that makes it register both opush and ftrn services.

thanks,
max

Index: transport.c
===================================================================
RCS file: /usr/local/cvs/ports/obexapp/transport.c,v
retrieving revision 1.10
diff -u -r1.10 transport.c
--- transport.c 9 Dec 2004 22:39:25 -0000       1.10
+++ transport.c 17 Jul 2006 19:42:14 -0000
@@ -162,6 +162,7 @@
        pid_t                   pid;
        int                     s;
        sdp_opush_profile_t     opush;
+       sdp_ftrn_profile_t      ftrn;
 
        syslog(LOG_DEBUG, "%s()", __func__);
 
@@ -216,6 +217,23 @@
                return (-1);
        }
 
+       memset(&ftrn, 0, sizeof(ftrn));
+       ftrn.server_channel = context->addr.rfcomm_channel;
+
+       if (sdp_register_service(context->ss,
+                       SDP_SERVICE_CLASS_OBEX_FILE_TRANSFER,
+                       &context->addr.rfcomm_bdaddr,
+                       (void *) &ftrn, sizeof(ftrn), NULL) != 0) {
+               syslog(LOG_ERR, "%s(): Could to register FTRN service with " \
+                       "local SDP daemon. %s (%d)",
+                       __func__, strerror(sdp_error(context->ss)),
+                       sdp_error(context->ss));
+               sdp_close(context->ss);
+               context->ss = NULL;
+
+               return (-1);
+       }
+
        while (1) {
                addrlen = sizeof(addr);
                context->tfd = accept(s, (struct sockaddr *) &addr, &addrlen);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bluetooth
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to