WLAN Horrible Roaming Performance (N800, OS2008), Software or Hardware Problem ?

Benno Senoner benno.senoner at googlemail.com
Fri Sep 26 12:38:05 EEST 2008


Hi Siarhei, thanks alot for the tips, here are my findings:

2008/9/26 Siarhei Siamashka <siarhei.siamashka at gmail.com>

> On Friday 26 September 2008, Benno Senoner wrote:
> > Hi all,
> > sorry for continuing an old discussion:
> >
> http://lists.maemo.org/pipermail//maemo-developers/2008-February/032389.htm
> >l
> >
> > I ugraded my N800 to the latest diablo image from nokia and I still have
> > issues with the wi-fi connectivity dying in some situations:
> > basically I have local GUI app on the n800 which communicates with a
> linux
> > postgresql server on the same LAN
> > (network is 802.11g 54mbit WEP 128bit).
> > the problem is when I walk out of the access point's coverage area my app
> > freezes when trying to issue an sql query (which is to be expected).
> > when I get back within the wi-fi coverage area (let's say after
> 10-30secs)
> > sometimes the app works again, sometimes I get the
> > connection lost banner and then it reconnects and sometimes it
> disconnects
> > from the wlan.
> > if I reenable the wlan manually clicking on the network icon then after
> the
> > wlan comes up my sql app starts working again, without the
> > TCP connection to the SQL server breaking down.
>
> Is manual reconnection always 'transparent' for your application (albeit
> with
> delays) even if you try to issue sql queries when outside of wi-fi coverage
> area? Can you precisely describe steps that you do to reproduce problem in
> a
> more formal way (what you do, what you get, what you expect)?
>

Basically this is a data entry app, a GUI with a listview, you press a
button and
it performs an SQL query and it fills the data in the listview. the user can
manipulate it locally
and then send the updated data back to SQL by pressing a button on the GUI.
If I don't press any button (= no data transfered) and walk out of the wlan
coverage area for let's say 1 min
and then return to the coverage area and try to use my application (pressing
the button on the GUI which
issues a SQL query), then often it does not work (react) anymore because the
nokia lost the wlan connection and does not
automatically reconnect. if I reactivate the wlan using the wlan icon on the
taskbar then my application after 10-30 sec wakes up.
today I tried walking out of coverage area for 1-2min with the data entry
app started but I did not perform any operations, when
I walked back within the coverage area the wlan connection died. it could
probably be due to the fact that the SQL tcp connections sends
some keep alive packets anyway even without the user not issuing any sql
queries. reactivating the wlan connection with the taskbar
unfroze the app (although only after 20-30sec, which is a long time).
I find this behaviour totally unacceptable (that the nokia does not
reconnect automatically when whitin coverage range as hinders the user
reliably running such apps like data entry apps which are always on etc.
I am surprised that Nokia engineers did not test this in a more extensive
way.
BTW my WLAN router is an asus wl-520gc
http://www.asus.com/products.aspx?l1=12&l2=43&l3=0&l4=0&model=1672&modelmenu=1

but as I wrote in my old message a few months ago the same problems did
occur using Buffalo wlan routers, so the problem is not the wlan router.

The operator of this data entry app is supposed to know nothing about the
nokia, it starts at boot time and goes fullscreen so for me
it is not an option expecting the user to restart the wlan manually each
time he accidentally walks out of coverage area.
in the past I had the same data entry app running on a linux server which
communicates with a windows ce ipaq which runs a small X11 server.
and it worked flawlessly though more data is transmitted than in the case of
the nokia.


> You can try to use tcpdump to watch all the TCP communication to get better
> understanding of the problem.


thanks for the tip, what specifically should I do ? run tcpdump on the n800
before walking out of the coverage range ?
Anyway, I think analyzing the TCP flow is not the first step to do since as
mentioned above the WLAN connection dies  by merely walking
out of coverage for 1-2min and when I return within the coverage range it
does not reconnect automatically (sometimes it does but not always)
So perhaps I should first focus on the driver ?

>
>
> > Siarhei suggested to recompile the cx3110x driver with a patch that
> retries
> > to communicate (at that time it was for N770).
>
> That's was a completely different problem (communication between different
> chips in your device and not TCP communication between some application
> over
> the network).


the TCP communication between my GUI SQL app on the nokia and the server
cannot
occur if the networking wlan connection dies outside coverage range and does
not reconnect when I return
within coverage range.
 So I think it is something related either to the driver or the networking
subsystem.
In network icon -> connectivity settings  there is a
Search interval combobox (default 10 minutes, minimum value to which you can
set it is 5min).
would it make sense to decrease this time (to a few secs using some system
file or syscall) in order to the nokia trying to reconnect more often ?
or is there a better way to do it ?

when the wlan dies I seem to get this error in dmesg (on the nokia):
[  328.460937] cx3110x: WARNING sm_drv_transmit: prism_softmac_frame_tx()
returned error -9.


returning to the cx3110x patch, do you know which patch I should use to fix
the problem you mentioned at that time (communication
between chips). was the patch designed to work only for the N770 or does it
work on the N800 too ?
Which version of the cx3110x sources should I use ? latest tarball or
repository ?
if someone has a working patch could he kindly post it here ?

I even tried a WLAN auto reconnect script which was posted as follow up of
my old message on maemo-developers but it does not work,
nothing happens, here is his old email with the script:
---------------------------------
I have faced the same problem with rooming. In addition, my situation was
complicated by presence of others wireless networks.
So basicaly I'm using sort of ping over UDP to determine existence/quality
of wireless link.

I'm also using this simple script to force connection to specified network (
and force disconnect before if it is actually connected to wrong network ).
You can easily adapt it to suit your needs ....

#get authorized network name
E3G_NET=`cat bindata/authorized_network`

NET=`dbus-send --type=method_call --system --print-reply
--dest=com.nokia.icd /com/nokia/icd com.nokia.icd.get_ipinfo | grep string |
head -1 | cut -d'"' -f2`
if [ "x$NET" != "x$E3G_NET" ]
then
#  echo disconnecting $NET ....
 dbus-send --system --dest=com.nokia.icd /com/nokia/icd_ui
com.nokia.icd_ui.disconnect boolean:true
fi
#echo connecting to #E3G_NET
dbus-send --type=method_call --system --dest=com.nokia.icd /com/nokia/icd
com.nokia.icd.connect string:"$E3G_NET" uint32:0

Hope this can help ....

 Jan
--------------------------------------------

thanks again Siarhei and everyone for the informations and help, I hope we
get this problem solved because
it will come handy to many.
best regards,
Benno
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://garage.maemo.org/pipermail/cx3110x-devel/attachments/20080926/16be6d40/attachment.htm 


More information about the cx3110x-devel mailing list