So, I finally got Internet access over Bluetooth to my Nokia 6233 working. Here's a short summary of the steps taken (this assumes a properly configured phone).
Make sure your Bluetooth device is recognized by OpenBSD: $ dmesg | grep ubt ubt0 at uhub4 port 1 "Micro Star International Bluetooth" \ rev 2.00/32.64 addr 2 Install the bluetooth-tools package. This provides, among other things, btconfig, btpin and rfcomm_sppd. Bring the Bluetooth interface up and verify that you're able to detect your phone: $ sudo btconfig ubt0 up bthub0 at ubt0 00:21:85:b2:51:41 $ btconfig ubt0 inquiry Device Discovery from device: ubt0 .... 1 response 1: bdaddr 00:1d:e9:e5:ad:01 (phone) : name "Nokia 6233" : class: [0x5a0204] Cellular Phone <Networking> <Capturing> <Object Transfer> <Telephony> : page scan rep mode 0x01 : clock offset 27997 Add the bdaddr to /etc/bluetooth/hosts so you don't have to type in the address each time you want to refer to your phone: $ sudo echo "00:1d:e9:e5:ad:01 phone" >> /etc/bluetooth/hosts Start bthcid(8), generate a pin using btpin(1) and connect to your phones' Dial Up Networking (DUN) service using rfcomm_sppd(1). $ sudo /usr/local/sbin/bthcid $ btpin -a phone -r -l 4 PIN: 2701 $ rfcomm_sppd -d ubt0 -a phone -s DUN You should receive a question on your phone if you want to accept the connection and then type in the PIN generated above. You should now be able to communicate with your phone: rfcomm_sppd[16519]: Starting on stdio... AT OK ATI3 Nokia 6233 OK Now that we know this works, we can attach this to a pty: $ rfcomm_sppd -d ubt0 -a phone -s DUN -t /dev/ttyp0 $ Create a ppp interface and connect using pppd(8) [1] $ sudo ifconfig ppp0 create $ pppd call netcom $ ifconfig ppp0 ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 priority: 0 groups: ppp inet 89.8.5.99 --> 10.6.6.6 netmask 0xff000000 (fancy IP address ;-)). Now check the routing table: $ netstat -rnf inet | grep default default 10.6.6.6 UG 0 0 - 56 ppp0 I've no idea what the name servers are supposed to be, so I just started a local one and pointed /etc/resolv.conf at it; $ sudo /usr/sbin/named $ sudo echo "nameserver 127.0.0.1" >> /etc/resolv.conf We're on! $ ping -c 4 www.google.com PING www.l.google.com (209.85.137.104): 56 data bytes 64 bytes from 209.85.137.104: icmp_seq=0 ttl=237 time=640.756 ms 64 bytes from 209.85.137.104: icmp_seq=1 ttl=237 time=595.876 ms 64 bytes from 209.85.137.104: icmp_seq=2 ttl=237 time=619.887 ms 64 bytes from 209.85.137.104: icmp_seq=3 ttl=237 time=645.883 ms --- www.l.google.com ping statistics --- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 595.876/625.600/645.883/19.746 ms [1] My option file and chat script is as follows (you probably have to modify this): $ cat /etc/ppp/peers/netcom # probably don't need all this poop /dev/ttypz 115200 local debug #crtscts nodetach noipdefault defaultroute lock novj nobsdcomp novjccomp nopcomp noaccomp noauth connect '/usr/sbin/chat -f /etc/ppp/peers/chat/umts.netcom' $ cat /etc/ppp/peers/chat/umts.netcom TIMEOUT 5 ECHO ON ABORT '\nBUSY\r' ABORT '\nERROR\r' ABORT '\nNO ANSWER\r' ABORT '\nNO DIAL TONE\r' ABORT '\nNO DIALTONE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' '' \rAT TIMEOUT 30 OK ATD*99# TIMEOUT 10 CONNECT ""