finding bluetooth serial port

Paul Sijben paul.sijben at xs4all.nl
Thu Nov 8 17:58:21 CET 2007


thanks very much!


Grant Edwards wrote:
> On 2007-11-07, Paul Sijben <paul.sijben at xs4all.nl> wrote:
> 
>> To automate/ease configuration in my app I am trying to find
>> out to which serial port a certain bluetooth device is
>> connected. With pybluez I can find out which bluetooth devices
>> I have, but it will not tell me the serial port they are
>> mapped to.
>>
>> Is there a way to figure this out from python? (I am
>> insterested in the platforms WinXP and linux primarily)
> 
> Under linux, the "right" thing to do is to write a udev rule so
> that the device has a predictiable name (or symlink).
> 
> http://reactivated.net/writing_udev_rules.html
> 
> If you don't want to write a udev rule, you'll need to bascally
> re-implement udev by parsing the sysfs directory tree until you
> find the device you're looking for. Here's how to do it for USB
> (I assume BT works in a similar fashion).  
> 
> Let's say I know the device has vendor ID 0403, product ID
> 6001, and serial number 123456.
> 
> I search through the directories under /sys/devices until I
> find a directory containing three files named
> 
>   idProduct
>   idVendor
>   serial  
> 
> Which contain the three strings I'm looking for.
> 
> In this case:
> 
> # cat /sys/devices/pci0000:00/0000:00:10.3/usb5/5-1/idVendor 
> 0403
> # cat /sys/devices/pci0000:00/0000:00:10.3/usb5/5-1/idProduct
> 6001
> # cat /sys/devices/pci0000:00/0000:00:10.3/usb5/5-1/serial   
> 12345678
> 
> Once you've found that directory, you can look at the other
> entries to find out whatever you want to know about the device:
> 
> /sys/devices/pci0000:00/0000:00:10.3/usb5/5-1/
> |-- 5-1:1.0
> |   |-- bAlternateSetting
> |   |-- bInterfaceClass
> |   |-- bInterfaceNumber
> |   |-- bInterfaceProtocol
> |   |-- bInterfaceSubClass
> |   |-- bNumEndpoints
> |   |-- bus -> ../../../../../../bus/usb
> |   |-- driver -> ../../../../../../bus/usb/drivers/ftdi_sio
> |   |-- ep_02 -> ../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/5-1:1.0/usbdev5.42_ep02
> |   |-- ep_81 -> ../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/5-1:1.0/usbdev5.42_ep81
> |   |-- interface
> |   |-- modalias
> |   |-- power
> |   |   |-- state
> |   |   `-- wakeup
> |   |-- subsystem -> ../../../../../../bus/usb
> |   |-- ttyUSB0
> |   |   |-- bus -> ../../../../../../../bus/usb-serial
> |   |   |-- driver -> ../../../../../../../bus/usb-serial/drivers/ftdi_sio
> |   |   |-- power
> |   |   |   |-- state
> |   |   |   `-- wakeup
> |   |   |-- subsystem -> ../../../../../../../bus/usb-serial
> |   |   |-- tty:ttyUSB0 -> ../../../../../../../class/tty/ttyUSB0
> |   |   `-- uevent
> |   |-- uevent
> |   |-- usb_endpoint:usbdev5.42_ep02 -> ../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/5-1:1.0/usbdev5.42_ep02
> |   |-- usb_endpoint:usbdev5.42_ep81 -> ../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/5-1:1.0/usbdev5.42_ep81
> |   |-- usbdev5.42_ep02
> |   |   |-- bEndpointAddress
> |   |   |-- bInterval
> |   |   |-- bLength
> |   |   |-- bmAttributes
> |   |   |-- dev
> |   |   |-- device -> ../../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/5-1:1.0
> |   |   |-- direction
> |   |   |-- interval
> |   |   |-- power
> |   |   |   |-- state
> |   |   |   `-- wakeup
> |   |   |-- subsystem -> ../../../../../../../class/usb_endpoint
> |   |   |-- type
> |   |   |-- uevent
> |   |   `-- wMaxPacketSize
> |   `-- usbdev5.42_ep81
> |       |-- bEndpointAddress
> |       |-- bInterval
> |       |-- bLength
> |       |-- bmAttributes
> |       |-- dev
> |       |-- device -> ../../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/5-1:1.0
> |       |-- direction
> |       |-- interval
> |       |-- power
> |       |   |-- state
> |       |   `-- wakeup
> |       |-- subsystem -> ../../../../../../../class/usb_endpoint
> |       |-- type
> |       |-- uevent
> |       `-- wMaxPacketSize
> |-- bConfigurationValue
> |-- bDeviceClass
> |-- bDeviceProtocol
> |-- bDeviceSubClass
> |-- bMaxPacketSize0
> |-- bMaxPower
> |-- bNumConfigurations
> |-- bNumInterfaces
> |-- bcdDevice
> |-- bmAttributes
> |-- bus -> ../../../../../bus/usb
> |-- configuration
> |-- devnum
> |-- driver -> ../../../../../bus/usb/drivers/usb
> |-- ep_00 -> ../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/usbdev5.42_ep00
> |-- event_char
> |-- idProduct
> |-- idVendor
> |-- manufacturer
> |-- maxchild
> |-- power
> |   |-- state
> |   `-- wakeup
> |-- product
> |-- serial
> |-- speed
> |-- subsystem -> ../../../../../bus/usb
> |-- uevent
> |-- usb_device:usbdev5.42 -> ../../../../../class/usb_device/usbdev5.42
> |-- usb_endpoint:usbdev5.42_ep00 -> ../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1/usbdev5.42_ep00
> |-- usbdev5.42_ep00
> |   |-- bEndpointAddress
> |   |-- bInterval
> |   |-- bLength
> |   |-- bmAttributes
> |   |-- dev
> |   |-- device -> ../../../../../../devices/pci0000:00/0000:00:10.3/usb5/5-1
> |   |-- direction
> |   |-- interval
> |   |-- power
> |   |   |-- state
> |   |   `-- wakeup
> |   |-- subsystem -> ../../../../../../class/usb_endpoint
> |   |-- type
> |   |-- uevent
> |   `-- wMaxPacketSize
> `-- version
> 
> 
> If you want to search by something other than the product id,
> vendor id and serial number, then pick some other of the files
> above that will have identifiable contents and look for that.
> 



More information about the Python-list mailing list