Archive

Posts Tagged ‘network’

Bluetooth tethering via PAN with Windows Mobile and Ubuntu

November 8, 2010 2 comments

I was on the train today, needed some of the Boost manuals, and had no internet connection. So I wanted to use my phone (an old HTC Prophet with Windows Mobile 6.1) as a network access point to browse over GPRS/EDGE. As I found out, it is fairly simple with Blueman and it even provides NetworkManager integration, so all NetworkManager-capable applications can be notified about the connectivity. Windows Mobile 6.1 allows tethering over a Bluetooth PAN (Personal Area Network); but there is another method called DUN (Dial Up Networking), which I will not describe here. So here is a step-by-step tutorial what I did for my PAN approach, with a few (german) screenshots, tested on Ubuntu 10.04 Lucid:

  1. Since my laptop was running on Ubuntu Lucid, there was already a recent Blueman version in the Ubuntu repos available. On older systems, you may want to add the Blueman Launchpad PPA.
    sudo apt-add-repository ppa:blueman/ppa  # only necessary on pre-lucid systems
    sudo aptitude update
    sudo aptitude install blueman

    Note that this also removes possibly installed gnome-bluetooth packages since Blueman is an adequate replacement for the GNOME Bluetooth UI.

  2. After the installation has finished, I had to enable the NMPANSupport plugin for NetworkManager 0.8 by right-clicking on the Blueman icon in the GNOME notification area and selecting “Plugins”. For older NetworkManager versions, there is also a plugin for NetworkManager 0.7, called NMIntegration.
    Blueman menu Blueman plugins
  3. Then I activated tethering on my phone (“Programs” → “Internet Sharing” on my Windows Mobile 6.1, but YMMV). Apparently this was neccesary with my model, because without tethering enabled I could not get a Bluetooth PAN connection in the next step.
    Windows Mobile 6.1: Programs menu Windows Mobile 6.1 Connection Sharing
  4. I paired the phone and my laptop via Bluetooth, and created a PAN (Personal Area Network) by connecting to the “Network Access Point” service on the phone. In Blueman, all you have to do after pairing is right-click on the device and select “Connect To: Network Access Point”. This creates a new network device bnep0 which is automagically configured through NetworkManager (using a stateless address autoconfiguration).
    Blueman: Connect to Network Access Point

    (Yes, my phone is called Leia… I also have another HTC Prophet that’s called Luke :-))

  5. However, in my setup, though I was able to ping certain IP adresses on the internet, DNS lookups timed out for some reason. It got better when I explicily set an IP address for the Bluetooth PAN driver on my phone, and did the tethering process all over again.
    Windows Mobile 6.1: Connactions menu Windows Mobile 6.1: Network Drivers Windows Mobile 6.1: Set up IP address
  6. And off I went with mobile internet access. Woo-hoo! \o/

I may also add that the NetUsage plugin in Blueman is very reasonable to use 😉 After activated, the network usage can be viewed by right-clicking on the Blueman icon and selecting “Network Usage”.


Flattr this

Advertisements

Qt: (Nearly) synchronous QNetworkAccessManager calls

July 8, 2010 9 comments

The QNetworkAccessManager class is very user-friendly, but it makes asynchronous calls. I was in the need for synchronous calls to handle my HTTP communication, but I did not want the overhead of another thread, so I googled a bit and finally came up with a short call to an event loop that processed the request. Like this:

QNetworkAccessManager * pnam = new QNetworkAccessManager(this);
// the slot was declared at another place
connect(pnam, SIGNAL(finished(QNetworkReply *)), this,
  SLOT(loginFinished(QNetworkReply*)));
QNetworkRequest req(QUrl("http://foo.bar"));
pnam->post(req, postData);

// execute an event loop to process the request (nearly-synchronous)
QEventLoop eventLoop;
// also dispose the event loop after the reply has arrived
connect(pnam, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit()));
eventLoop.exec();

This way my user-defined slot for the pnam->finished() signal was called immediately, and I could be sure to have the HTTP reply at the end of this code snippet.

Found here: Qt-Interest Mailing List: QNetworkAccessManager and QNetworkReply, synchronous


Flattr this