Internet connection sharing

Internet connection sharing

Marius Gedminas
Karma: 552
2009-10-14 21:29 UTC
You have:

* 1 (one) Nokia N900
* 1 (one) USB cable for the N900
* 1 (one) laptop running Linux
* 1 (one) USB 3g dongle with a SIM slot for the laptop
* 1 (one) SIM card

Your goal: get both the laptop and the N900 online.

So far I've achieved partial success:

* insert SIM card into the N900
* get online
* connect the N900 to the laptop with a USB cable
* on the N900 open a root shell and run
ifconfig usb0 10.20.10.1 netmask 255.255.255.0 up
dnsmasq -i usb0 -a 10.20.10.1 -I lo -z -d -x /var/run/dnsmasq.usb0.pid
* on the laptop run
ifconfig usb0 10.20.10.2 netmask 255.255.255.0 up
echo 'nameserver 10.20.10.1' > /etc/resolv.conf

So far so good, but without iptables I cannot make the N900 do network
address translation. I've also installed openssh-server on the N900 and used
ssh -D 1080 root@10.20.10.1 from the laptop to get a SOCKS5 proxy on
localhost, so I can get online from my laptop, but that's a rather
inconvenient partial solution.

Also, I'd be happier if I could do this without cables (i.e. over wifi
or usb).

Am I reinventing the bicycle? Are there working solutions?

Marius Gedminas
--
Remember the... the... uhh.....

  •  Reply

Re: Internet connection sharing

Marius Gedminas
Karma: 552
2009-10-14 23:08 UTC
On Thu, Oct 15, 2009 at 12:29:10AM +0300, Marius Gedminas wrote:
> You have:
>
> * 1 (one) Nokia N900
> * 1 (one) USB cable for the N900
> * 1 (one) laptop running Linux
> * 1 (one) USB 3g dongle with a SIM slot for the laptop
> * 1 (one) SIM card
>
> Your goal: get both the laptop and the N900 online.
...
> Am I reinventing the bicycle? Are there working solutions?

It seems that
http://pc-connectivity.garage.maemo.org/2nd_edition/index.html wants to
be a solution, but it's Internet Sharing is mostly focused on sharing
the host's connection to the device, rather than the other way around.
The other way around is confusing -- why should I specify how my N900 is
connected? Figure it out by looking at the default route! Besides, on
Maemo 5 the PC connectivity manager doesn't let me select "cellular
connection". And then, despite the doc saying

Under "Share internet connection with" option, you can check the interfaces (Usb, Bluetooth and/or Wlan) to share Internet with

I see no sign of "Share internet connection with".

Just give me iptables and I'll be happy.

Marius Gedminas
--
Do not meddle in the affairs of sysadmins,
they are quick to anger and have no need for subtlety.

  •  Reply

Re: Internet connection sharing

Marius Gedminas
Karma: 552
2009-10-15 20:08 UTC
On Thu, Oct 15, 2009 at 02:08:09AM +0300, Marius Gedminas wrote:
> On Thu, Oct 15, 2009 at 12:29:10AM +0300, Marius Gedminas wrote:
> > You have:
> >
> > * 1 (one) Nokia N900
> > * 1 (one) USB cable for the N900
> > * 1 (one) laptop running Linux
> > * 1 (one) USB 3g dongle with a SIM slot for the laptop
> > * 1 (one) SIM card
> >
> > Your goal: get both the laptop and the N900 online.
> ...
> > Am I reinventing the bicycle? Are there working solutions?

What, nobody has done this?

> It seems that
> http://pc-connectivity.garage.maemo.org/2nd_edition/index.html wants to
> be a solution,

For the record, the current version of maemo-pc-connectivity
(specifically, the usb-network-modules package) is broken, as in

* modprobe g_ether fails to find g_ether.ko since the package's
postinst fails to call depmod -a
* modprobe g_ether fails even after depmod -a because some symbols are
missing

After a few hours of head-banging today I finally discovered that the
usb0 network interface appears the first time you plug in a USB cable
and select 'PC Suite'. After that you can unplug it and replug it in
charging-only mode, usb0 will continue to work.

I think it's the g_nokia.ko module that provides USB networking (as well
as some other things).

Marius Gedminas
--
I want patience, and I WANT IT NOW!

  •  Reply

Re: Internet connection sharing

Marius Gedminas
Karma: 552
2009-10-19 20:19 UTC
On Thu, Oct 15, 2009 at 12:29:10AM +0300, Marius Gedminas wrote:
> You have:
>
> * 1 (one) Nokia N900
> * 1 (one) USB cable for the N900
> * 1 (one) laptop running Linux
> * 1 (one) USB 3g dongle with a SIM slot for the laptop
> * 1 (one) SIM card
>
> Your goal: get both the laptop and the N900 online.
>
> So far I've achieved partial success:
>
> * insert SIM card into the N900
> * get online
> * connect the N900 to the laptop with a USB cable
> * on the N900 open a root shell and run
> ifconfig usb0 10.20.10.1 netmask 255.255.255.0 up
> dnsmasq -i usb0 -a 10.20.10.1 -I lo -z -d -x /var/run/dnsmasq.usb0.pid
> * on the laptop run
> ifconfig usb0 10.20.10.2 netmask 255.255.255.0 up
> echo 'nameserver 10.20.10.1' > /etc/resolv.conf
>
> So far so good, but without iptables I cannot make the N900 do network
> address translation. I've also installed openssh-server on the N900 and used
> ssh -D 1080 root@10.20.10.1 from the laptop to get a SOCKS5 proxy on
> localhost, so I can get online from my laptop, but that's a rather
> inconvenient partial solution.
>
> Also, I'd be happier if I could do this without cables (i.e. over wifi
> or usb).

This was supposed to say "or Bluetooth". I wish I hadn't missed the
unsupported Bluetooth profiles talk at the summit...

I've had partial success with wifi, after installing wireless-tools from
the fremantle tools repository (it's also in downloads.maemo.nokia.com):

ifconfig wlan0 down # otherwise iwconfig mode says device busy
iwconfig wlan0 mode ad-hoc
ifconfig wlan0 up # otherwise iwconfig essid times out
iwconfig wlan0 essid n900
ifconfig wlan0 10.20.30.1 netmask 255.255.255.0 up
dnsmasq -i wlan0 -a 10.20.30.1 -I lo -z -d -x /var/run/dnsmasq.wlan0.pid

Trouble is, every 10 minutes the device does a wifi scan or something
and shuts down the hardware. I have to walk over to the n900 and wake
it up manually by doing

ifconfig wlan0 up
iwconfig wlan0 essid n900

which is a big pain. Any way to temporarily tell icd that it shouldn't
touch wlan0 for a while?

A much more troubling thing is that after you do this wake-up call
twice, the n900 ups and reboots. Exactly 11 seconds after the second
wake-up call, I've got ping logs to prove it.

Also, I want iptables. Trying to build iptable_nat.ko kinda failed:

~ $ sudo insmod iptable_nat.ko
insmod: error inserting 'iptable_nat.ko': -1 Invalid module format
~ $ dmesg | tail
...
[90600.794433] iptable_nat: no symbol version for struct_module

Clearly, I'm doing something wrong.

--
Some performers on television appear to be horrible people, but when
you finally get to know them in person, they turn out to be even worse.
-- Avery

  •  Reply

Re: Internet connection sharing

Marius Gedminas
Karma: 552
2009-10-19 21:41 UTC
On Mon, Oct 19, 2009 at 11:19:20PM +0300, Marius Gedminas wrote:
> I've had partial success with wifi, after installing wireless-tools from
> the fremantle tools repository (it's also in downloads.maemo.nokia.com):
>
> ifconfig wlan0 down # otherwise iwconfig mode says device busy
> iwconfig wlan0 mode ad-hoc
> ifconfig wlan0 up # otherwise iwconfig essid times out
> iwconfig wlan0 essid n900
> ifconfig wlan0 10.20.30.1 netmask 255.255.255.0 up
> dnsmasq -i wlan0 -a 10.20.30.1 -I lo -z -d -x /var/run/dnsmasq.wlan0.pid

For extra convenience also pass

--dhcp-range=10.20.30.10,10.20.30.100,6h
--dhcp-option=3,10.20.30.1
--dhcp-option=6,10.20.30.1

to dnsmasq, then your tablet will act as a DHCP server.

> Trouble is, every 10 minutes the device does a wifi scan or something
> and shuts down the hardware.

Fixable if you go to Settings -> Internet Connections and set WLAN
search interval to Never.

> Also, I want iptables. Trying to build iptable_nat.ko kinda failed:
>
> ~ $ sudo insmod iptable_nat.ko
> insmod: error inserting 'iptable_nat.ko': -1 Invalid module format
> ~ $ dmesg | tail
> ...
> [90600.794433] iptable_nat: no symbol version for struct_module
>
> Clearly, I'm doing something wrong.

This could be because the SDK has kernel sources of version
2.6.28-20093908+0m5, and my device has kernel 2.6.28-20094102+0m5.

Any idea where to find the appropriate sources? GPL requirements etc.,
they ought to be out there somewhere.

FWIW I'm following the instructions at
http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Kernel_and_Debugging_Guide/Maemo_Kernel_Guide,
but it seems that those are a bit outdated
(maemo-sdk-rootstrap_5.0beta_armel.tgz? EXTRAVERSION=-maemo2?). I
would appreciate any feedback from people who have tried building kernel
modules with the final SDK.

Marius Gedminas
--
We're sysadmins. To us, data is a protocol-overhead.

  •  Reply

Re: Internet connection sharing

Eero af Heurlin
Karma: 389
2009-11-10 22:00 UTC
Hi there, in order to co-ordinate efforts regarding this (I had the same idea, using the N900 as hotspot for laptop etc) I created a new garage project: https://garage.maemo.org/projects/mobilehotspot

the license may need to change from LGPL to GPL proper in case we need to ship compiled iptables module, but that should not be an issue.
  •  Reply

Re: Internet connection sharing

Vitaly Bordyug
Karma: 28
2009-11-17 13:05 UTC
>
> On Mon, Oct 19, 2009 at 11:19:20PM +0300, Marius Gedminas wrote:
> > I've had partial success with wifi, after installing wireless-tools from
> > the fremantle tools repository (it's also in downloads.maemo.nokia.com):
> >
> > ifconfig wlan0 down # otherwise iwconfig mode says device busy
> > iwconfig wlan0 mode ad-hoc
> > ifconfig wlan0 up # otherwise iwconfig essid times out
> > iwconfig wlan0 essid n900
> > ifconfig wlan0 10.20.30.1 netmask 255.255.255.0 up
> > dnsmasq -i wlan0 -a 10.20.30.1 -I lo -z -d -x /var/run/dnsmasq.wlan0.pid
>
> For extra convenience also pass
>
> --dhcp-range=10.20.30.10,10.20.30.100,6h
> --dhcp-option=3,10.20.30.1
> --dhcp-option=6,10.20.30.1
>
> to dnsmasq, then your tablet will act as a DHCP server.
>

Does it mean, that, looking from Bluetooth connection prospective, after bringing up BT network, It will be impossible to use the device's broadband connection (without iptables)?

I mean, n900 supports BT network profile, which NetworkManager successfully leverages. But I haven't actuially tested ability to access Internet from PC through the device - yet.

-Vitaly

> > Trouble is, every 10 minutes the device does a wifi scan or something
> > and shuts down the hardware.
>
> Fixable if you go to Settings -> Internet Connections and set WLAN
> search interval to Never.
>
> > Also, I want iptables. Trying to build iptable_nat.ko kinda failed:
> >
> > ~ $ sudo insmod iptable_nat.ko
> > insmod: error inserting 'iptable_nat.ko': -1 Invalid module format
> > ~ $ dmesg | tail
> > ...
> > [90600.794433] iptable_nat: no symbol version for struct_module
> >
> > Clearly, I'm doing something wrong.
>
> This could be because the SDK has kernel sources of version
> 2.6.28-20093908+0m5, and my device has kernel 2.6.28-20094102+0m5.
>
> Any idea where to find the appropriate sources? GPL requirements etc.,
> they ought to be out there somewhere.
>
> FWIW I'm following the instructions at
> http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Kernel_and_Debugging_Guide/Maemo_Kernel_Guide,
> but it seems that those are a bit outdated
> (maemo-sdk-rootstrap_5.0beta_armel.tgz? EXTRAVERSION=-maemo2?). I
> would appreciate any feedback from people who have tried building kernel
> modules with the final SDK.
>
> Marius Gedminas
> --
> We're sysadmins. To us, data is a protocol-overhead.
>
>
>
  •  Reply

Re: Internet connection sharing

Marius Gedminas
Karma: 552
2009-12-22 20:38 UTC
> On Mon, Oct 19, 2009 at 11:19:20PM +0300, Marius Gedminas wrote:
> > I've had partial success with wifi, after installing wireless-tools from
> > the fremantle tools repository (it's also in downloads.maemo.nokia.com):
> >
> > ifconfig wlan0 down # otherwise iwconfig mode says device busy
> > iwconfig wlan0 mode ad-hoc
> > ifconfig wlan0 up # otherwise iwconfig essid times out
> > iwconfig wlan0 essid n900
> > ifconfig wlan0 10.20.30.1 netmask 255.255.255.0 up
> > dnsmasq -i wlan0 -a 10.20.30.1 -I lo -z -d -x /var/run/dnsmasq.wlan0.pid
>
> For extra convenience also pass
>
> --dhcp-range=10.20.30.10,10.20.30.100,6h
> --dhcp-option=3,10.20.30.1
> --dhcp-option=6,10.20.30.1
>
> to dnsmasq, then your tablet will act as a DHCP server.

The scripts are now at http://mg.pov.lt/770/internet-connection-sharing/ if anybody feels adventurous and wants to play.

(and oh dear, I'm replying to my mailing list post from a web forum, I can't believe this is actually happening)
  •  Reply