linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Szymon Janc <ext.szymon.janc@tieto.com>
To: krishnaks@iwavesystems.com
Cc: Marcel Holtmann <marcel@holtmann.org>, linux-bluetooth@vger.kernel.org
Subject: Re: USB  BT gives problem If device plugged during boot to platform.
Date: Tue, 08 Sep 2015 15:12:29 +0200	[thread overview]
Message-ID: <4063128.4B3eOl7Vlx@leonov> (raw)
In-Reply-To: <88de30607cc30c5d6e25e43bd6965da0.squirrel@iwavesystems.com>

Hi,

On Tuesday 08 of September 2015 09:04:18 krishnaks@iwavesystems.com wrote:
> >>> Hi,
> >>> 
> >>>> I am porting bluez 5.33 to android kitkat 4.4.3.I am using USB based
> >>>> Bluetooth device. I referred instruction in
> >>>> http://git.kernel.org/cgit/bluetooth/bluez.git/tree/android/README and
> >>>> able to build.
> >>>> After botting Android image with USB dongle connected and type
> >>>> "hciconfig
> >>>> hci0 up" on console, It is throwing following error.
> >>>> Can't init device hci0: Unknown error 132 (132)
> >>>> 
> >>>> If I Type hciconfig -a . It gives following.
> >>>> hci0:   Type: BR/EDR  Bus: USB
> >>>> 
> >>>>        BD Address: 5C:F3:70:6C:5E:FB  ACL MTU: 1021:8  SCO MTU: 64:1
> >>>>        DOWN
> >>>>        RX bytes:547 acl:0 sco:0 events:27 errors:0
> >>>>        TX bytes:384 acl:0 sco:0 commands:27 errors:0
> >>>>        Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
> >>>>        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
> >>>>        Link policy: RSWITCH SNIFF
> >>>>        Link mode: SLAVE ACCEPT
> >>>> 
> >>>> But If I unplug and plug USB dongle, and then try same command
> >>>> (hciconfig
> >>>> hci0 up), It works. Even "hcitool scan" command also working after
> >>>> that.
> >>>> 
> >>>> Why 1st time not working when USB dongle is connected?
> >>>> Also when I check Bluez debug log in logcat.
> >>>> I am getting one error log when USB dongle connected during boot.
> >>>> E/bluetoothd(  841): Failed to set mode: Blocked through rfkill
> >>>> (0x12).
> >>> 
> >>> I think that blocked through rfkill is pretty obvious. Check with the
> >>> rfkill tool on what the current settings are. For some reason it seems
> >>> Bluetooth is blocked by default. And I remember there were some kernel
> >>> patches for this. Just do not remember the details.
> >>> 
> >>> Regards
> >>> 
> >>> Marcel
> >>> 
> >>> --
> >>> To unsubscribe from this list: send the line "unsubscribe
> >>> linux-bluetooth"
> >>> in
> >>> the body of a message to majordomo@vger.kernel.org
> >>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >> 
> >> Hi,
> >> 
> >> Thanks for the reply.
> >> 
> >> In my busybox utils rfkill is not enabled. If I enable it and try
> >> "rfkill
> >> unblock" is that will be enough? or I need to search for Kernel patch
> >> that
> >> fixes this rfkill block issue?
> > 
> > Hi,
> > 
> > By Analysing I found 3 scenarios and only in one scenario BT is working.
> > Scenario 1 : Connect USB BT Dongle and then boot the android device.Then
> > Turn on from Android Bluetooth settings
> > 
> > Result: Not working. Rfkill block error.
> > E/bluetoothd(  868): Failed to set mode: Blocked through rfkill (0x12)
> > 
> > Scenario 2: Connect USB BT Dongle and boot. Then unplug and plug again.
> > Then Turn on from Android Bluetooth settings.
> > 
> > Result: Working: BT turning on and scanning BT/BLE devices.
> > 
> > Scenario 3: Boot Android device and then plug the USB BT Dongle.Then Turn
> > on from Android Bluetooth settings.
> > 
> > Result: Not working. Here we are not getting any debug prints from bluez.
> > Whether we need to rerun the init.bluetooth.rc as BT Dongle was not
> > connected during boot.
> > From Logcat,observing following error messages
> > 
> >   IBluetooth.configHciSnoopLog return false
> >   Bluetooth module is not loaded
> > 
> > Logcat:
> > 
> > -------------------Start-------------------
> > D/BluetoothManagerService(  543): enable():  mBluetooth =null mBinding =
> > false
> > D/BluetoothManagerService(  543): Message: 1
> > D/BluetoothManagerService(  543): MESSAGE_ENABLE: mBluetooth = null
> > D/BluetoothAdapterService( 1032): REFCOUNT: CREATED. INSTANCE_COUNT2
> > D/BluetoothAdapterState( 1032): make
> > I/BluetoothAdapterState( 1032): Entering OffState
> > D/BluetoothManagerService(  543): BluetoothServiceConnection:
> > com.android.bluetooth.btservice.AdapterService
> > D/BluetoothManagerService(  543): Message: 40
> > D/BluetoothManagerService(  543): MESSAGE_BLUETOOTH_SERVICE_CONNECTED: 1
> > E/BluetoothManagerService(  543): IBluetooth.configHciSnoopLog return
> > false
> > D/BluetoothManagerService(  543): Calling onBluetoothServiceUp callbacks
> > D/BluetoothManagerService(  543): Broadcasting onBluetoothServiceUp() to 5
> > receivers.
> > D/BluetoothAdapterState( 1032): CURRENT_STATE=OFF, MESSAGE = USER_TURN_ON
> > D/BluetoothAdapterProperties( 1032): Setting state to 11
> > I/BluetoothAdapterState( 1032): Bluetooth adapter state changed: 10-> 11
> > D/BluetoothAdapterService( 1032): Broadcasting updateAdapterState() to 1
> > receivers.
> > D/BluetoothManagerService(  543): Message: 60
> > D/BluetoothManagerService(  543): MESSAGE_BLUETOOTH_STATE_CHANGE:
> > prevState = 10, newState=11
> > D/BluetoothManagerService(  543): Bluetooth State Change Intent: 10 -> 11
> > D/BluetoothBondStateMachine( 1032): make
> > D/BluetoothMapService( 1032): onReceive
> > I/BluetoothBondStateMachine( 1032): StableState(): Entering Off State
> > D/HeadsetService( 1032): Received start request. Starting profile...
> > D/HeadsetStateMachine( 1032): make
> > E/BluetoothHeadsetServiceJni( 1032): Bluetooth module is not loaded
> > D/A2dpService( 1032): Received start request. Starting profile...
> > V/Avrcp   ( 1032): make
> > E/BluetoothAvrcpServiceJni( 1032): Bluetooth module is not loaded
> > D/A2dpStateMachine( 1032): make
> > E/BluetoothA2dpServiceJni( 1032): Bluetooth module is not loaded
> > D/A2dpStateMachine( 1032): Enter Disconnected: -2
> > D/HidService( 1032): Received start request. Starting profile...
> > E/BluetoothHidServiceJni( 1032): Bluetooth module is not loaded
> > D/HealthService( 1032): Received start request. Starting profile...
> > I/BluetoothAdapterState( 1032): Entering PendingCommandState State:
> > isTurningOn()=true, isTurningOff()=false
> > E/BluetoothHealthServiceJni( 1032): Bluetooth module is not loaded
> > D/BluetoothAdapterService( 1032): Profile still not
> > running:com.android.bluetooth.hdp.HealthService
> > D/PanService( 1032): Received start request. Starting profile...
> > D/BluetoothPanServiceJni( 1032): initializeNative(L110): pan
> > E/BluetoothPanServiceJni( 1032): ## ERROR : initializeNative(L115):
> > Bluetooth module is not loaded##
> > D/BluetoothTethering(  543): got CMD_CHANNEL_HALF_CONNECTED
> > E/BluetoothTethering(  543): Trying to set mAsyncChannel twice!
> > D/BtGatt.DebugUtils( 1032): handleDebugAction() action=null
> > D/HeadsetPhoneState( 1032): sendDeviceStateChanged. mService=0 mSignal=0
> > mRoam=0 mBatteryCharge=5
> > D/BtGatt.GattService( 1032): Received start request. Starting profile...
> > D/BtGatt.GattService( 1032): start()
> > E/BtGatt.JNI( 1032): ERROR: void android::initializeNative(JNIEnv*,
> > jobject)(L694): Bluetooth module is not loaded##
> > D/BluetoothAdapterService( 1032): Profile still not
> > running:com.android.bluetooth.hdp.HealthService
> > D/BluetoothAdapterService( 1032): Profile still not
> > running:com.android.bluetooth.hdp.HealthService
> > D/BluetoothMapService( 1032): Received start request. Starting profile...
> > D/BluetoothMapService( 1032): start()
> > D/BluetoothAdapterService( 1032): Profile still not
> > running:com.android.bluetooth.map.BluetoothMapService
> > D/BluetoothAdapterService( 1032): Profile still not
> > running:com.android.bluetooth.map.BluetoothMapService
> > D/BluetoothAdapterService( 1032): Profile still not
> > running:com.android.bluetooth.map.BluetoothMapService
> > D/BluetoothAdapterState( 1032): CURRENT_STATE=PENDING, MESSAGE = STARTED,
> > isTurningOn=true, isTurningOff=false
> > E/BluetoothAdapterState( 1032): Error while turning Bluetooth On
> > D/BluetoothAdapterProperties( 1032): Setting state to 10
> > I/BluetoothAdapterState( 1032): Bluetooth adapter state changed: 11-> 10
> > D/BluetoothAdapterService( 1032): Broadcasting updateAdapterState() to 1
> > receivers.
> > I/BluetoothAdapterState( 1032): Entering OffState
> > D/BluetoothManagerService(  543): Message: 60
> > D/BluetoothManagerService(  543): MESSAGE_BLUETOOTH_STATE_CHANGE:
> > prevState = 11, newState=10
> > D/BluetoothManagerService(  543): Broadcasting
> > onBluetoothStateChange(false) to 10 receivers.
> > D/BluetoothA2dp(  543): onBluetoothStateChange: up=false
> > D/BluetoothHeadset(  543): onBluetoothStateChange: up=false
> > D/BluetoothPbap(  851): onBluetoothStateChange: up=false
> > D/BluetoothHeadset(  839): onBluetoothStateChange: up=false
> > D/BluetoothMap(  851): onBluetoothStateChange: up=false
> > D/BluetoothHeadset(  839): onBluetoothStateChange: up=false
> > D/BluetoothHeadset(  839): onBluetoothStateChange: up=false
> > D/BluetoothInputDevice(  851): onBluetoothStateChange: up=false
> > D/BluetoothManagerService(  543): Bluetooth State Change Intent: 11 -> 10
> > E/BluetoothManagerService(  543): recoverBluetoothServiceFromError
> > D/BluetoothMapService( 1032): onReceive
> > D/DockEventReceiver(  851): finishStartingService: stopping service
> > W/ContextImpl(  851): Calling a method in the system process without a
> > qualified user: android.app.ContextImpl.startService:1487
> > android.content.ContextWrapper.startService:494
> > android.content.ContextWrapper.startService:494
> > com.android.settings.bluetooth.DockEventReceiver.beginStartingService:134
> > com.android.settings.bluetooth.DockEventReceiver.onReceive:115
> > D/BluetoothManagerService(  543): Sending off request.
> > D/BluetoothAdapterState( 1032): CURRENT_STATE=OFF, MESSAGE = USER_TURN_OFF
> > D/BluetoothManagerService(  543): Calling onBluetoothServiceDown callbacks
> > D/BluetoothManagerService(  543): Broadcasting onBluetoothServiceDown() to
> > 5 receivers.
> > D/BluetoothAdapterService( 1032): Cleaning up adapter native....
> > D/BluetoothAdapterService( 1032): Done cleaning up adapter native....
> > D/BluetoothAdapterService(746876560)( 1032): ****onDestroy()********
> > 
> > -------------------End---------------------
> > 
> > For Scenario 1 , I am trying to build rfkill tool for android(Currently no
> > success). Can we change the state from code by opening rfkill path
> > "/sys/class/rfkill/rfkill0/state" and write 1 to enable?
> > 
> > But scenario 3 looks like I missed some configuration.
> > 
> > What could be the problem?
> > 
> > Regards,
> > KP
> > 
> > 
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-bluetooth"
> > in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> Hi All,
> 
> 
> I analysed the Android flow and found that Android System server will
> initialize and check for bluetooth hardware on during Boot. So if we
> connect the USB BT Dongle after boot Android BT service may not identify
> it.
> May be this is the reason because of which scenario 3 (Boot Android device
> and then plug the USB BT Dongle.Then Turn on from Bluetooth setting) is
> not working.
> This is my understanding. Correct me If I am wrong.
> 
> Anyone tried USB BT pnp on android?

This should work but you need to load modules on boot (or have all compiled 
into kernel).

-- 
BR
Szymon Janc

  reply	other threads:[~2015-09-08 13:12 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-08  9:51 USB BT gives problem If device plugged during boot to platform krishnaks
2015-09-08 13:04 ` krishnaks
2015-09-08 13:12   ` Szymon Janc [this message]
2015-09-08 14:09     ` krishnaks
2015-09-09  7:36       ` Szymon Janc
2015-09-09 10:58         ` krishnaks
2015-09-11 12:18           ` krishnaks
2015-09-12 10:21             ` Marcel Holtmann
  -- strict thread matches above, loose matches on Subject: below --
2015-08-28 13:31 krishnaks
2015-08-28 19:07 ` Marcel Holtmann
2015-08-31  7:13   ` krishnaks

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4063128.4B3eOl7Vlx@leonov \
    --to=ext.szymon.janc@tieto.com \
    --cc=krishnaks@iwavesystems.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcel@holtmann.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).