[Spirit FM] mikereidis:
v 2.0.16 :

http://www.mediafire.com/file/eje76cso86bh3ss/FMRadio_v2016.zip

Let me know if mediafire doesn't work for you.

This version fixes the show stopper bugs I'm aware of, hopefully, and should make the HCI UART mode much easier to use.

This version also requires an SDCard mounted/accessible as "/sdcard/".

My audio upgrades are underway. Due to that it's possible audio might work on some devices now, and may stop working well on other devices. If you report no audio, please try to determine if signal strength, seeking or RDS are working.

If the app can't get access to the FM chip, it will start or power on with an "FM Operation Failed" dialog. Previously it started in a test mode which made it difficult to determine if it was actually working, but with no audio. If you can rectify the problem by turning BT on or off, power cycle the app power. This will result in another "FM Operation Failed" dialog for the power off.

The daemon is now named "sprtd" and should be placed in the /system/bin/ directory. But only copy the daemon there if you need it for "direct HCI sockets mode", or it the app internal "HCI UART mode" doesn't work and you want to try this. The old bcprp and bcfm are no longer needed but they don't interfere.

The sprtd daemon is only needed now for "direct HCI sockets mode", which is a high performance alternative to the default hcitool mode.

To use the app internal "HCI UART mode" just don't copy the sprtd daemon to /system/bin. This is the mode you want if you have the proprietary Broadcom BT stack and the other modes don't work.

Whether app internal or daemon external, the UART mode should be easier to use now. It is hardcoded to start at the normal 115200 baud, and to stay at that baudrate. Higher rates won't be needed until I support SCO digital data extraction. :)

It is also hardcoded to try these two HCI UART port names in order:

"/dev/s3c2410_serial0",

"/dev/ttyHS0",

The first is for the Galaxy Tab and similar devices, the second for many other devices, such as my two phones running CM.

If your port was named "/dev/hci_port" you could run:

adb shell ln /dev/hci_port /dev/ttyHS0

and/or

adb shell ln /dev/hci_port /dev/s3c2410_serial0

This will only be in effect until a reboot and is clearly not a permanent solution.

The main remaining issue is the HCD or Broadcom firmware file. The app runs the command "find /system /data -name *.hcd" to attempt to find the file. If this doesn't work or you want to over-ride this, or speed up power-on slightly you can create the directory "/sdcard/sprt" and copy your HCD file to "/sdcard/sprt/bcm.hcd"

This is the order and algorithm the app uses to determine how the FM chip is accessed:

(1) If the file /system/bin/sprtd exists, the app will only use the daemon modes. First, HCI sockets mode is tried and if that fails, external HCI UART mode is tried. If neither works, the app is intended to go to (2) but this isn't working right now.

(2) If the file /system/bin/sprtd does NOT exist, the app will try to run hcitool to access the TI or Broadcom chips.

(3) If (2) doesn't work and btipsd_cli exists an obscure TI mode that nobody seems to be using is attempted.

(4) If (3) doesn't work the internal HCI UART mode is attempted.

(5) If (4) and thus, none of the above modes work to find an FM chip, then an error dialog is shown.