ginpachi / android-bluez-ime

Automatically exported from code.google.com/p/android-bluez-ime
0 stars 0 forks source link

onlive controller #89

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1.doesnt see device
2.
3.

What is the expected output? What do you see instead?
Same

What version of the product are you using? On what operating system?
Android 2.2.2
 Lg 3d p920
Please provide any additional information below.

Want to connect onlive controller 

Original issue reported on code.google.com by pauljone...@gmail.com on 30 Sep 2011 at 7:32

GoogleCodeExporter commented 8 years ago
I do not have a onlive controller for testing, but I found this document:
http://support.onlive.com/app/answers/detail/a_id/163/~/onlive-wireless-controll
er

I think you need to do something special before it can be used. This is 
probably like the PS3 where you need to pair it with the unit that you want to 
use. If this is anything like the PS3 controller, you need a device with L2CAP 
support, which means you will need to install a custom ROM on the device.

For now I will not work on this because the amount of people that would be able 
to use this is very limited.

Original comment by kenneth@hexad.dk on 1 Oct 2011 at 3:03

GoogleCodeExporter commented 8 years ago
Hi Kennth,

The original OnLive controller used a proprietary radio (similar to wifi) and 
it wasn't possible to do this. As of a week ago, they are now selling a 
Bluetooth controller that Bluez IME should be able to work with. I really love 
the controller, and want to use it for emulators and other games on my tablet. 
Since it already works with Android devices, support should be fairly easy to 
add, yes?

I would hack it together myself but I am unable to download the SDK due to 
bandwidth restraints. Since you probbly don't have a controller, let me know if 
there is anything I can provide/test for you.

Original comment by Gary13...@gmail.com on 16 Dec 2011 at 10:12

GoogleCodeExporter commented 8 years ago
Any documentation as to how it works would be great.

The documentation I can find still states that you have to connect it with USB 
first.
That smells like the PS3, where the USB connection is used to write the host 
Bluetooth MAC address to the controller, so the controller connects to the box, 
not the other way around.

Original comment by kenneth@hexad.dk on 17 Dec 2011 at 8:25

GoogleCodeExporter commented 8 years ago
Opened my own issue for this before I saw this post. Very sorry for that should 
have searched first.  The controller does not pair over usb first it comes out 
of the box ready to go with bluetooth coonectivity. Pairs to my phone no 
problem. In fpse i get some functionality with every button acting as the up 
arrow.  Can't remap the keys. A lot of people are picking up this controller so 
adding functionality would be awesome. Anything i can help with let me know.

Original comment by Rapidlay...@gmail.com on 28 Dec 2011 at 2:20

GoogleCodeExporter commented 8 years ago
Issue 134 has been merged into this issue.

Original comment by kenneth@hexad.dk on 30 Dec 2011 at 5:39

GoogleCodeExporter commented 8 years ago
I need some technical details before I can start with this, such as what 
protocol does it use? RFCOMM or HID?

Original comment by kenneth@hexad.dk on 30 Dec 2011 at 5:43

GoogleCodeExporter commented 8 years ago
No results on getting it working with Bluez IME but I developed a work around 
on Android 3.1+ devices. It allows the controller to behave exactly how the 360 
controller works, which allows you to use it for many games such as GTA 3 and 
Shadowgun. It works very well!

http://forum.xda-developers.com/showthread.php?t=1418263

I am still unable to get it to connect with Bluez IME. I know very little about 
Bluetooth but it appears that the controller connects to the device, and not 
the other way around? Setup entails putting controller into pairing mode, 
making the tablet/phone discoverable, then clicking on the device to pair with 
it. After this, turning on the controller will automatically connect to the 
tablet/phone with no intervention. I rarely use Bluetooth, but don't you 
usually need to manually click connect on the tablet after turning the device 
on?

OnLive touts it as an "adaptive wireless technology" that finds the optimal 
protocol for connecting to the device. In one of the original news 
announcement, it had "(HID, L2CAP, etc)" next to this statement, but this has 
since been removed. Perhaps that was a mistake and OnLive asked them to correct 
it, and the "adaptive wireless" is just a marketing gimmick. How would I go 
about determining the protocol it uses?

Original comment by Gary13...@gmail.com on 30 Dec 2011 at 5:52

GoogleCodeExporter commented 8 years ago
It connects through HID

Original comment by Rapidlay...@gmail.com on 31 Dec 2011 at 2:38

GoogleCodeExporter commented 8 years ago
I'm going to chime in here as well. I can confirm it does use HID.

They could be referring to the adaptive frequency hopping that Bluetooth has 
had version 1.2, but that's a part of the Bluetooth standard, nothing that 
OnLive can really tout as their own.

Original comment by electrof...@gmail.com on 31 Dec 2011 at 3:37

GoogleCodeExporter commented 8 years ago
Issue 137 has been merged into this issue.

Original comment by kenneth@hexad.dk on 2 Jan 2012 at 9:55

GoogleCodeExporter commented 8 years ago
Sadly enough, all the major Android makers strip support for L2CAP (and HID) 
from the AOSP code. This means that almost all devices (HTC, Samsung and LG) 
cannot connect to anything using HID.

If you write them they will say that they "do not support" extra devices. 
Unfortunately they only fix for this is installing a kernel module that 
replaces the stock Bluetooth stack. Allowing an application to do so would 
cause massive security issues, so Android does not allow that. In other words, 
no HTC, Samsung or LG device can communicate over HID without running a custom 
ROM. It is possible to implement the HID protocol in an application, but not 
the L2CAP module.

Android 3.1+ should have native support for HID (keyboards, etc), but the 
manufacturers can still choose to omit the functionality. If you have a device 
that supports HID, there is no need for Bluez IME, just pair the device with 
the regular Android interface and it will auto-connect as a Keyboard when 
Android detects that it is on. If your device does not support HID, most likely 
there is no L2CAP support and thus I cannot make Bluez IME work either.

There are a number of other requests on this site that all ask for HID support 
in some way. I have responded to them all, that I will not work on this because 
the number of users that are willing to either flash their phone or buy a 
compatible one are too small, compared to the amount of work I have to do. 
Also, since newer devices should make the problem go away (built-in HID), I 
lack the motivation to work on it.

I you know something that will change my mind, or want help implementing this, 
let me know.

Original comment by kenneth@hexad.dk on 2 Jan 2012 at 10:40

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Well, we've confirmed that it can connect as an HID on custom ROMs such as 
CyanogenMod, but for an unknown reason the OnLive app will not detect the 
controller. We're not sure if the OnLive app simply does not look for the 
controller or if it's an issue with CyanogenMod advertising the controller.

To try to determine if it could be the former, I've instructed someone on how 
to edit the build.prop to try to fool the OnLive app into seeing itself running 
on Android 3.1 or 4.0 (which OnLive has said it supports the controller on). 
Unfortunately it has not resolved the problem. I can't further test this myself 
as the bluetooth stack experimental build of CM on my Epic is not working 
entirely correctly, (I suspect authentication issues.)

So at this point in time, until the issue with OnLive detecting the connected 
controllers on CyanogenMod gets figured out, using a solution like Bluez IME 
seems our only recourse. OnLive failed to mention the Android 3.1 / 4.0 
limitation when they sold us the controllers, so many of us are stuck with a 
purchase we can't use as we originally intended.

Original comment by electrof...@gmail.com on 4 Jan 2012 at 3:44

GoogleCodeExporter commented 8 years ago
I've changed my mind :)

I have just finished HID support for keyboards, and I happen to have a HID 
gamepad lying around.
I should be adding support for HID gamepads within a week or two, so those of 
you with a ROM that has L2CAP (CyanogenMod and others) should be able to get 
this working then.

Original comment by kenneth@hexad.dk on 8 Jan 2012 at 9:11

GoogleCodeExporter commented 8 years ago
Attached is a debug version that has HID keyboard support.
It will not work directly with OnLive, but if someone wants to help out, you 
can connect to the OnLive controller with the "Keyboard (HID)" driver and it 
will output some data in logcat (use aLogcat from Market to read it).

I need someone to press and depress buttons while watching logcat. I need some 
data like:
"Unknown report 0xa1: a1 01 xx yy ...." -> Up pressed 
"Unknown report 0xa1: a1 01 xx yy ...." -> Up released
"Unknown report 0xa1: a1 01 xx yy ...." -> Left pressed 
"Unknown report 0xa1: a1 01 xx yy ...." -> Left released
...

And so forth. If I can get this data, I should be able to make it work pretty 
fast.

Apart from the updated version of BluezIME, you must also install the new 
HIDEnabler package attached.
I will use this in the future to enable HID drivers on devices, so the 
BluezIME.apk here is the same as the one on Market.

Original comment by kenneth@hexad.dk on 12 Jan 2012 at 8:32

Attachments:

GoogleCodeExporter commented 8 years ago
Can't get anything just tries to connect to the controller and says Error: 
Connection Refused.....

:(

Original comment by Rapidlay...@gmail.com on 12 Jan 2012 at 11:41

GoogleCodeExporter commented 8 years ago
Have you paired the controller?
Try removing the pairing and re-pair it.

Original comment by kenneth@hexad.dk on 13 Jan 2012 at 8:41

GoogleCodeExporter commented 8 years ago
Ok I was able to connect using the HIDKeyboard driver through the Blue IMEz 
interface.  I don't see anything in logcat that is similar to what you listed.  
I did see alot of W/keycharactermap not found on random keypress. I did find 
this attached stretch of log although I did not see these results while in 
logcat. Suggestions?

Original comment by Rapidlay...@gmail.com on 13 Jan 2012 at 11:09

GoogleCodeExporter commented 8 years ago
Ok as of now I am unable to show the logcat.  I will have it by tonight. Still 
though I can't see the data you are requesting on demand.

Original comment by Rapidlay...@gmail.com on 13 Jan 2012 at 11:16

GoogleCodeExporter commented 8 years ago
Do you still need the info requested above to get this working? I have the 
onlive controller and a rooted hannspad running honeycomb, so might be able to 
get the info you need?

Original comment by r.plumri...@gmail.com on 9 Feb 2012 at 12:06

GoogleCodeExporter commented 8 years ago
Like the poster above, I was able to connect to the controller, BluezIME said 
it had connected, but in the logcat all I see is loads of repeated messages 
saying Connection Refused and messages saying the device is not a keyboard. Do 
you want to see an example?

Original comment by r.plumri...@gmail.com on 9 Feb 2012 at 12:26

GoogleCodeExporter commented 8 years ago
Yes, I would like to see a sample.

I have seen cases where Android sees the device as a Keyboard and then 
connects, causing Bluez IME to get connection refused. A little later Android 
figures out that it cannot communicate anyway and drops the connection.

To prevent this, you can long press on the device and remove the HID checkmark.

Original comment by kenneth@hexad.dk on 15 Feb 2012 at 9:43

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Hiya 
On my tablet running a modded honeycomb, there is no long press option, 
pressing it takes me to a new config window, but there is no option to disable 
HID. However, Bluez says it is connected, but logcat shows connection rejected: 
http://pastebin.com/gVpCB0M5

On my Galaxy S2 running gingerbread, there is the option to disable HID (but I 
know onlive is not supported in gingerbread anyway). I get a different error 
this time, Bluez says Error: unknown error 0. Here is the portion of the log 
that seems relevant: http://pastebin.com/KV3P8BPu

Original comment by r.plumri...@gmail.com on 15 Feb 2012 at 10:50

GoogleCodeExporter commented 8 years ago
For the Gingerbread version, "Unknown error: 0" usually comes with an error 
message stating "L2CAP not yet supported". Then after a while you get the "out 
of sockets message" because there is a bug in Android that cause it to not 
close the sockets that fail to connect. But it is strange that you have the 
option to disable HID, because HID is not supported?

The Honeycomb version is (also) strange, in that it seems that the Bluetooth 
driver rejects the connection because the controller is not a keyboard (but a 
gamepad). But if BluezIME says it is connected, then it should be connected. I 
have never seen a false "Connected to: xxxx" message before. Can you see on the 
controller if it is connected (blinking differently, etc) ?

Original comment by kenneth@hexad.dk on 20 Feb 2012 at 9:18