Archivos de la categoría ‘n70’

Howto: Using your mobile phone as a bluetooth modem

Octubre 4, 2009

Hello everybody!

It’s been a long time since I don’t write about any computer stuff so here I’m back again showing you how to use your mobile phone as a bluetooth modem under Linux. I needed it a couple of weeks back when I was travelling and wanted to be able to check my e-mail anywhere so I hope it seems usefull for you tu.

First of all a few important facts:

  • I’m using a Nokia N70 but it should work with almost any device
  • I’m using a Spanish SIMYO card
  • I’m running a Debian GNU/Linux SO with some required packages (bluez, bluez-utils, wvdial)

Altough the process should be quite simple (pair your computer with your phone and then use it) I found lot of troubles while pairing that I’ll show how to solve.

First of all you should check if your mobile phone supports acting like a bluetooth modem so do ’sdptool browse’ and look for something like “Dial-up Networking” (obviously have your bluetooth enabled in both PC and phone).


$> sdptool browse
Inquiring ...
Browsing 00:1C:9A:40:CB:BB ...

[...]

Service Name: Dial-Up Networking
Service RecHandle: 0×10017
Service Class ID List:
“Dialup Networking” (0×1103)
Protocol Descriptor List:
“L2CAP” (0×0100)
“RFCOMM” (0×0003)
Channel: 3
Language Base Attr List:
code_ISO639: 0×454e
encoding: 0×6a
base_offset: 0×100
Profile Descriptor List:
“Dialup Networking” (0×1103)
Version: 0×0100
[...]

Okey, now lets pair both devices (here is where I found most of my problems) as none of the pages I found showed how to do it. Pairing means allowing a connection from PC to mobile phone or vicebersa.

Edit your ‘/etc/bluetooth/rfcomm.conf’ to assign a device (MAC) and channel, use which you get in the previous step.


Mirage:/home/kets# cat /etc/bluetooth/rfcomm.conf
#
# RFCOMM configuration file.
#

rfcomm0 {
# Automatically bind the device at startup
bind no;

# Bluetooth address of the device
device 00:1C:9A:40:CB:BB;

# RFCOMM channel for the connection
channel 3;

# Description of the connection
comment “DUN to use N70 as modem”;
}

Now let’s try to connect using ‘rfcomm connect rfcomm0′ which will prompt a message in your mobile phone to allow or deny the incoming connection and probably a PIN number.


Mirage:/var/lib/bluetooth/00:1F:3A:DB:1E:29# rfcomm connect rfcomm0
Can't connect RFCOMM socket: Connection refused

If you get this ‘Connection refused‘ even if you are allowing it and inserting correctly your PIN (the one specified in /etc/bluetooth/hcid.conf’), it means that you need a key agent. Anyway check your syslog to see if this is what it’s going wrong:


tail -f /var/log/syslog

Sep 20 16:45:58 Mirage bluetoothd[2993]: pin_code_request (sba=00:1F:3A:DB:1E:29, dba=00:1C:9A:40:CB:BB)
Sep 20 16:45:58 Mirage bluetoothd[2993]: No agent available for 0 request

So, this mean that what’s going wrong is that you insert any PIN in you phone and the computer doesn’t recognize it so it denies the connection request. If you have the ‘gnome-bluetooth’ package installed it is said that it should prompt a PIN code to insert the same PIN that you inserted in your phone but, at least for me, it’s not working. The solution? Use bluetooth-agent which sadly doesn’t have any man page so I had to do several tests in order to make it work.

What you have to do before trying to connect using ‘rfcomm’ is telling the bluetooh agent which PIN are you going to use, so run:


Mirage:/# bluetooth-agent 1234

And after that try to connect:


rfcomm connect rfcomm0

(write 1234 in your phone and … :) )

Connected /dev/rfcomm0 to 00:1C:9A:40:CB:BB on channel 3
Press CTRL-C for hangup

There you are!, you’ve finally paired your devices!. Now, the rest of the process is quite easy. Edit ‘/etc/wvdial.conf’ as following:


[Dialer SIMYO]
Modem = /dev/rfcomm0
Baud = 460800
Phone = *99***1#
Username =.
Password =.
Stupid Mode = on
Dial Command = ATDT
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","gprs-service.com"
Modem Type = Analog Modem
New PPPD = yes
ISDN = 0
Ask Password = 0
Compuserve = 0
Force Address =
Idle Seconds = 3000
DialMessage1 =
DialMessage2 =
Auto DNS = 1

You might have to make some changes if you’re using a different network operator like phone number, username, password and the Init3 part where here it says “grps-service.com”. For the first one contact your operator, and for the following check in your mobile phone: tools -> settings -> connection -> access points, and choose the one you’re using to see the correct values.

Now we’re done, just run ‘wvdial SIMYO’, wait until the negotiation finishes and enjoy checking your e-mail or surfing the web:


Mirage:/home/kets# wvdial SIMYO
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","gprs-service.com"
AT+CGDCONT=1,"IP","gprs-service.com"
OK
--> Modem initialized.
--> Idle Seconds = 3000, disabling automatic reconnect.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Fri Sep 25 00:12:36 2009
--> Pid of pppd: 9543
--> Using interface ppp0
--> pppd: ��[0c]
--> pppd: ��[0c]
--> pppd: ��[0c]
--> pppd: ��[0c]
--> local IP address 95.214.14.79
--> pppd: ��[0c]
--> remote IP address 10.6.6.6
--> pppd: ��[0c]
--> primary DNS address 195.230.105.134
--> pppd: ��[0c]
--> secondary DNS address 195.230.105.135
--> pppd: ��[0c]

That was all. Hope it helps :)

Control remoto con Nokia N70

Enero 5, 2008

Este blog no prometía nada de informática y Linux pero como se supone que tiene que reflejar mis actividades voy a comentar una que llevaba bastante tiempo rondándome por la cabeza y así sirve para que a otros no les pase lo mismo.

Hace tiempo que trasteo con los móviles, el bluetooth y el ansia de poder controlar mi ordenador mientras estoy tirado en la cama. Conseguí hacerlo con mi anterior móvil, un SonyEricsson T610 y ahora que tengo un Nokia N70, se suponía que todo iba a ser mucho más fácil pero no lo ha sido, así que voy a explicar más o menos como he conseguido hacerlo.

Para empezar diré que hay muchas maneras y programas para hacerlo pero tras mucho buscar y probar, el único que me daba resultados medio decentes era el PyS60RemoteControl que sirve para cualquier móvil capaz de interpretar Python. No entraré en detalles de como instalarlo, ya que se puede encontrar en la página del programa y en los readmes que lo acompañan. Sin embargo a la hora de la configuración ha sido bastante complicado, así que aquí expongo como hacerlo funcionar ya que en la web del programa no hay casi ninguna explicación.

Una vez bajado lo primero que hay que hacer es configurar el programa, para ello se utiliza el archivo PyS60RemoteControl.conf, simplemente hay que tocar el primer bloque de código, donde dice ‘connections’:

{ 'connections': { 'bluetooth': { 'classname': 'Bluetooth',
'host': '00:80:5A:20:4E:F7',
'port': 0},
'emulator': { 'classname': 'Socket',
'host': '127.0.0.1',
'port': 33000},
'serial': {'classname': 'Serial', 'port': 12},
'socket': { 'classname':'Socket',
'host': '0.0.0.0',
'port': 33000}},

Lo único que hay que especificar es, donde dice host, poner nuestra dirección MAC del dispositivo bluetooth del ordenador, se puede sacar haciendo un ‘hcitool dev’

Después de hacer esto ya se puede conseguir la conectividad entre el ordenador y el móvil, pero probablemente sólo funcione el plugin del XMMS.

Si queremos poder utilizar el móvil para emular el ratón y el teclado (que se puede hacer pero en ningún sitio viene explicado como y me he tenido que buscar la vida), lo único que hay que hacer es tener soporte en el kernel para ‘user level driver support’ que se encuentra en:


Device Drivers --->
Input device support --->
Miscellaneous devices --->
User level driver support

Da igual ponerlo incrustado en el kernel o como módulo, pero si lo ponéis como módulo, acordaros de cargarlo mediante el comando ‘modprobe uinput’ y agregarlo al /etc/modules (o usar la herramienta modconf que lo agregará directamente al cargarlo la primera vez). Gracias a esto podéis usar el móvil para controlar el ordenador al hacer presentaciones o chorradillas así.

Para poder controlar el VLC no hay que nadar nada extraño excepto a la hora de arrancar el programa para ver los videos, agregar la siguiente opción ‘–extraintf http’ que arrancar el servidor http. A mi por defecto me utilizar el puerto 8080, así que tendréis que cambiar en el archivo de configuración del VLC el puerto, osea que el archivo ‘plugins/VLC.conf’ quedaría así


...
'http_host': 'localhost:8080',
...

Ahora ya podéis ver los videos tirados en la cama y subir y bajar el volumen, cambiar entre fullscreen mode o normal, pausar, avanzar… ¡a disfrutar!

Aun así sigo sin conseguir hacer funcionar:

  • Que se vea la pantalla del ordenador en el móvil (se supone que al utilizar el ratón se tendría que ver).
  • Configurar el plugin del ratón para que responda a mis teclas y no a las que vienen por defecto.

¡Espero que os sirva de ayuda!