View Single Post
Old 01-11-2013, 07:23 AM   #1
ichrispa
Enthusiast
ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.ichrispa shines like a glazed doughnut.
 
Posts: 40
Karma: 8604
Join Date: Dec 2012
Location: Germany
Device: Kobo Touch
KT Wlan connection recognition using shttpd

Hi everyone,

I made some spare time to fix a little something I wanted to do for a long time. I love my KT - especially the fact that it is wifi capable. I use it in the university to download lecture notes.

What really annoyed me was the fact that the KT was so keen on "phoning home" to kobo and google when it get's a connection. That was easily fixed by modifying /etc/hosts.

What I had not found in the web so far was the fact that the KT verifies that it's wifi connection is running by loading "www.apple.com/library/test/success.html" every time the wifi is started. I really do not see why I should inform apple about where and when I start my kobo!

Unfortunately fixing this is not as easy as just blocking it. If the KT cannot load it's test page, it says there was a connection error and wants me to choose a new access point.


The idea is to server the success.html page from an KT internal webserver, thus enabling it to always find the Wifi up and running I did this by compiling shttpd (http://garr.dl.sourceforge.net/proje...pd-1.42.tar.gz) for my ARMv7 KT. Mongoose and thttpd would also do, but they can't be started using inetd. Thumbs up for mongoose by the way - I use it in a couple of other projects and am really happy with it.

I suppose you already might have the ftp and telnetd running here. If not, there are tons of ressource about how to do that on the web and in this forum.

Now, after compiling shttpd I placed it in /mnt/onboard/.local/bin (it's where all my binaries end up). Compiling it requires Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux. But other than that, there where no real tweaks. Next, I modified /etc/inetd.conf as follows:

Code:
21 stream tcp nowait root /bin/busybox ftpd -w -S  /mnt/onboard
23 stream tcp nowait root /bin/busybox telnetd -i
80 stream tcp nowait root /mnt/onboard/.local/bin/shttpd shttpd -inetd 1 -root /mnt/onboard/.local/srv/www -ports 80
Obviously, this starts the shttpd via inetd the second someone calls a tcp service on port 80 of the KT. My Web Root is /mnt/onboard/.local/srv/www, containing library/test/success.html.

We now point apple to localhost in /etc/hosts:

Code:
127.0.0.1 host localhost.localdomain localhost localhost localhost.localdomain
127.0.0.1 kobo.com www.kobo.com ecimages.kobobooks.com download.kobobooks.com
127.0.0.1 mobile.kobobooks.com services.kobobooks.com social.kobobooks.com
127.0.0.1 webstore2.kobobooks.com webstore1.kobobooks.com webstore.kobobooks.com
127.0.0.1 www.google-analytics.com
127.0.0.1 kobo.de www.kobo.de ecimages.kobobooks.de download.kobobooks.de
127.0.0.1 mobile.kobobooks.de services.kobobooks.de social.kobobooks.de
127.0.0.1 webstore2.kobobooks.de webstore1.kobobooks.de webstore.kobobooks.de
127.0.0.1 www.google-analytics.de
127.0.0.1 www.apple.com www.apple.de apple.com apple.de
Next point: 127.0.0.1 should be the loopback device... but my KT does not create this device at boot. Either in your local bootscript called from /etc/init.d/rcS or in the file itself append the following to create the loopback device at boot:

Code:
# Create lo device
ifconfig lo 127.0.0.1
Reboot... and voila. No more phoning home to apple for connection checks Hope this helps someone.


By the way this gave me a nice idea. Since the KT plugin structure is no longer maintained, it makes it kind of hard to start you own programs while nickel holds control over the KT. Since mongoose, shttpd and thttpd have cgi support, one could in theory create a local webpage using php (after getting it compiled...) which kills nickel on demand and starts the application of your choice. In my eyes this is easier then compiling QT embedded plugins...

Might give that a try some day.
ichrispa is offline   Reply With Quote