title: Install Bluetooth SPP on Android tablet
body: <p>I am unable to discover my Bluetooth printer from my Android JellyBean tablet. But both the devices are discoverable from my macbook. The bluetooth printer spec says that it uses SPP (Serial Port Profile) to communicate. sdptool output is below</p>
  
  <pre><code>shell@android:/ # sdptool browse local
  Browsing FF:FF:FF:00:00:00 ...
  Service RecHandle: 0x10000
  Service Class ID List:
    "PnP Information" (0x1200)
  Profile Descriptor List:
    "PnP Information" (0x1200)
      Version: 0x0102
  
  Service Name: Audio Source
  Service RecHandle: 0x10001
  Service Class ID List:
    "Audio Source" (0x110a)
  Protocol Descriptor List:
    "L2CAP" (0x0100)
      PSM: 25
    "AVDTP" (0x0019)
      uint16: 0x102
  Profile Descriptor List:
    "Advanced Audio" (0x110d)
      Version: 0x0102
  
  Service Name: AVRCP TG
  Service RecHandle: 0x10002
  Service Class ID List:
    "AV Remote Target" (0x110c)
  Protocol Descriptor List:
    "L2CAP" (0x0100)
      PSM: 23
    "AVCTP" (0x0017)
      uint16: 0x103
  Profile Descriptor List:
    "AV Remote" (0x110e)
      Version: 0x0100
  
  Service Name: Voice Gateway
  Service RecHandle: 0x10003
  Service Class ID List:
    "Headset Audio Gateway" (0x1112)
    "Generic Audio" (0x1203)
  Protocol Descriptor List:
    "L2CAP" (0x0100)
    "RFCOMM" (0x0003)
      Channel: 11
  Profile Descriptor List:
    "Headset" (0x1108)
      Version: 0x0100
  
  Service Name: OBEX Object Push
  Service RecHandle: 0x10004
  Service Class ID List:
    "OBEX Object Push" (0x1105)
  Protocol Descriptor List:
    "L2CAP" (0x0100)
    "RFCOMM" (0x0003)
      Channel: 12
    "OBEX" (0x0008)
  Profile Descriptor List:
    "OBEX Object Push" (0x1105)
      Version: 0x0100
  
  Service Name: Network service
  Service Description: Network service
  Service RecHandle: 0x10005
  Service Class ID List:
    "Network Access Point" (0x1116)
  Protocol Descriptor List:
    "L2CAP" (0x0100)
      PSM: 15
    "BNEP" (0x000f)
      Version: 0x0100
      SEQ16: 800 806
  Language Base Attr List:
    code_ISO639: 0x656e
    encoding:    0x6a
    base_offset: 0x100
  Profile Descriptor List:
    "Network Access Point" (0x1116)
      Version: 0x0100
  </code></pre>
  
  <p>Tried to add SP</p>
  
  <pre><code>shell@android:/ # sdptool add SP
  Serial Port service registered
  </code></pre>
  
  <p>After adding SP, browse listing using sdptool shows SP service</p>
  
  <pre><code>Service Name: Serial Port
  Service Description: COM Port
  Service Provider: BlueZ
  Service RecHandle: 0x10006
  Service Class ID List:
    "Serial Port" (0x1101)
  Protocol Descriptor List:
    "L2CAP" (0x0100)
    "RFCOMM" (0x0003)
      Channel: 1
  Language Base Attr List:
    code_ISO639: 0x656e
    encoding:    0x6a
    base_offset: 0x100
  Profile Descriptor List:
    "Serial Port" (0x1101)
      Version: 0x0100
  </code></pre>
  
  <p>I tried discovery with this setup and it still doesnt find the bluetooth printer.</p>
  
  <p>I am not sure if SP was installed on the bluez stack on my Android as i couldn't find hcitool or rfcomm executables.</p>
  
  <p>here is the listing on my /etc/bluetooth folder</p>
  
  <pre><code>shell@android:/ # ls /etc/bluetooth/                                           
  BCM40183B2_26M.hcd
  audio.conf
  auto_pairing.conf
  blacklist.conf
  bt_addr.conf
  input.conf
  main.conf
  network.conf
  </code></pre>