Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Jan 2005 14:22:09 -0800
From:      Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
To:        Jes <jjess@freebsd.polarhome.com>
Cc:        freebsd-bluetooth@freebsd.org
Subject:   Re: Motorola E1000 and obexapp 1.4.4 in server mode
Message-ID:  <41E30011.2050005@savvis.net>
In-Reply-To: <20050110224201.373ad571@zurich.homeunix.com>
References:  <20050107163705.616cbe5f@zurich.homeunix.com> <41DECEA3.5080500@savvis.net> <20050107195406.0c76f42e@zurich.homeunix.com> <41DEE958.70403@savvis.net> <20050107223725.15a4554d@zurich.homeunix.com> <20050110163125.060d1e26@zurich.homeunix.com> <41E2C546.10801@savvis.net> <41E2E01C.2090003@savvis.net> <20050110224201.373ad571@zurich.homeunix.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Jes,

>> can i ask you to try something else? basically its the same change
>> as before, but you need to adjust a couple more variables.
>> 
>> 1) edit /sys/netgraph/bluetooth/include/ng_btsocket_rfcomm.h file
>> and change
>> 
>> #define RFCOMM_DEFAULT_MTU              127
>> 
>> to
>> 
>> #define RFCOMM_DEFAULT_MTU              667
>> 
>> 
>> 2) edit /sys/netgraph/bluetooth/include/ng_btsocket_rfcomm.h file
>> and change
>> 
>> #define NG_BTSOCKET_RFCOMM_SENDSPACE \ (RFCOMM_MAX_CREDITS *
>> RFCOMM_DEFAULT_MTU * 10) #define NG_BTSOCKET_RFCOMM_RECVSPACE \ 
>> (RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 10)
>> 
>> to
>> 
>> #define NG_BTSOCKET_RFCOMM_SENDSPACE \ (RFCOMM_MAX_CREDITS *
>> RFCOMM_DEFAULT_MTU * 2) #define NG_BTSOCKET_RFCOMM_RECVSPACE \ 
>> (RFCOMM_MAX_CREDITS * RFCOMM_DEFAULT_MTU * 2)
>> 
>> 
>> 3) re-compile ng_btsocket module, i.e.
>> 
>> # cd /sys/modules/netgraph/bluetooth/socket/ # make depend # make #
>> make install
>> 
>> 
>> 4) reboot and try again
> 
> 
> WoW !  now I get everything working ... Those changes are good,
> tested with both motorola e1000 and sony ericsson z600, obexapp in
> both server and client mode and rfcomm_pppd.

thanks for trying this. i'm glad it works for you now. once again it 
sort of points finger back at the phone. i did not change any logic in 
my code. all i did is changed default mtu on *rfcomm* sessions to match 
default *l2cap* mtu.

btw, rfcomm spec says default rfcomm mtu should be 127 bytes. i still 
did not find anything in the spec that says otherwise. right now i'm 
fairly convinced that there is something wrong in l2cap/rfcomm channel 
configuration process. what i do not know is who is at fault here. i 
need to have access to the phone in question. anyone willing to donate 
phone/money? :)

just for the record here how the fix works

- default l2cap mtu is 672 bytes
- rfcomm packet header is 5 bytes

so, assuming one rfcomm frame must fit entirely into one l2cap packet we 
get 672 - 5 = 667 default rfcomm mtu.

the second change it just to ensure we do not reserve too much memory 
for socket's send and receive buffers.

> Thanks a lot Max.

thank you for your time and patience.

max



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