How to connect to a Windows Embedded Handheld device without using a mobile data network

July 17th, 2013 by Bogdan Nitulescu in Android, Bluetooth, Embedded, iOS, WiFi

We have recently explored how to connect – wireless – to embedded devices scattered across factories and warehouses. Windows Embedded Handheld (the successor of Mobile 6.5) is a typical choice of OS of such devices, and most of them can have Bluetooth and WiFi on board – so these technologies are obvious choices. What they don’t have is a SIM chip in every device and a data plan. Their users have laptops (PCs and Macs), iPads, iPhones, Android phones and tablets, and can physically walk in the same room where devices are located.

Here’s what we found.

WiFi Infrastructure mode + DHCP

This is the obvious choice working with all platforms (Windows 7 PC, Mac OSX, iOS, Android). You need to have a wireless router in infrastructure mode, and assign addresses via DHCP. The wireless router must be in range both of the device and the PC (one obvious place is to plug it near the device itself)

Once both the device and the PC are in the same LAN, the device can broadcast information about itself via some discovery protocol: UPnP, Bonjour, or you can write a simple custom UDP-based discovery mechanism. It is easy to write a client that uses this information, on all platforms.

Read the rest of this entry »

Change your Bluetooth address of your Linux machine

August 10th, 2007 by Bogdan Nitulescu in Bluetooth, General, Linux

Do you have Bluetooth on your computer? Is it a Linux machine? For some weird reason, do you need it to have a different address?

If you answered yes to the above, here’s the magic command:

bccmd -d 0 psset -s 0 bdaddr 0x44 0x00 0x66 0x55 0x33 0x00 0x22 0x11

…and your Bluetooth device address (BDA) becomes 11:22:33:44:55:66. Of course, you will replace the underlined numbers with the actual address that you want to write.

It does not always work. You need bluez-utils 3, and you need a CSR chip in your computer or USB dongle. To find out, type hciconfig hci0 version and the manufacturer should be Cambridge Silicon Radio. Last time I checked, they had~70% market share, so you have a good chance of having one.

If you have more than a single device, use “bccmd -d 1 …” for hci1, and so on.

The option -s 0 stores it into the default memory, which is usually RAM – so the new address may be lost after reboot. Your chip may have various ROM stores – use -s 1 to -s 3. If you want specifically to write your new address in ram, use -s 4. Note that the store with the highest number has priority (e.g. if an address is stored in both RAM and flash, RAM has priority)

For gory details about programming CSR chips, you can get documents from