[APP] FM Radio for the Droid 2!!

Search This thread

slayher

Senior Member
Mar 27, 2010
310
1,270
Instuctions to get FM Radio on Droid2

1. Droid2 must be rooted. Remount the /system to RW

2. Unzip the archive, and use abd push to put the files in the appropriate folders.
cd system

a. adb push app/FMRadio.apk /system/app
b. adb push app/FMRadioService.apk /system/app
c. adb push bin/fmradioserver /system/bin
d. adb push lib/libFMRadio.so /system/lib
e. adb push lib/libfmradio_jni.so /system/lib
f. adb push lib/libfmradioplayer.so /system/lib

3. Remount /system to ro
4. Plug in headphones.
5. Run FMradio
6 ???
7. Profit!

For me, I live in a crappy radio area, so I was only able to pick up 2 stations. YMMV.

As always I will not be responsible for any damage, pregnancies, or missing items from your home.

Thanks!

Slayher
 

karnovaran

Senior Member
Jul 27, 2009
598
71
PDX
I've tried to run it multiple times and rebooted, but it just says "FM Radio is being launched, please wait..."
 

karnovaran

Senior Member
Jul 27, 2009
598
71
PDX
get a logcat

It sounds like either a permission issue, or one of the files didnt get pushed

Code:
roid.intent.action.HEADSET_PLUG
08-31 00:07:08.619  2097  2097 D JAVA:FMRadioPlayerService: HEADSET is pluged in
/out.
08-31 00:07:08.627  2097  2097 V JAVA:FMRadioPlayerService: handleMessage headse
t plug begin
08-31 00:07:08.627  2097  2097 V JAVA:FMRadioPlayerService: mHeadset = 1
08-31 00:07:08.627  2097  2097 V JAVA:FMRadioPlayerService: mIsHeadsetPlugged =
true
08-31 00:07:08.635  2097  2097 W JAVA:FMRadioPlayerService: Headset is pluged in
!
08-31 00:07:08.658  2090  2090 D FMRadioMain: Leave getDataFromDB()
08-31 00:07:08.666  2090  2090 D FMRadioMain: leave updateListView()
08-31 00:07:08.666  2090  2090 D FMRadioMain: onStart() called
08-31 00:07:08.666  2090  2090 W FMRadioMain: onServiceConnected::fmradio java s
ervice started
08-31 00:07:08.674  2097  2101 W JAVA:FMRadioPlayerService: IFMRadioPlayerServic
e.Stub : isPowerOn
08-31 00:07:08.674  2097  2101 D JAVA:FMRadioPlayerService: FMStateUNInit:isPowe
rOn(), return misPowerOn value to UI
08-31 00:07:08.791  2090  2090 W FMRadioMain: servie is ready popup a wait dialo
g
08-31 00:07:08.791  2090  2090 D FMDataProvider: set channel table: FM_Radio
08-31 00:07:08.807  2097  2097 D JAVA:FMRadioPlayerService: Received intent: com
.motorola.fmradio.bindservice.succeed
08-31 00:07:08.807  2097  2097 D JAVA:FMRadioPlayerService: bind service succeed

08-31 00:07:08.807  2097  2097 W JAVA:FMRadioPlayerService: Notice home to show
update current preset name on the notice bar.
08-31 00:07:08.830  2934  2934 E FMRadioService: onCreate() called***
08-31 00:07:08.853  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =0
08-31 00:07:08.861  2934  2934 V FMRadioService: onBind***
08-31 00:07:08.861  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.869  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =1
08-31 00:07:08.877  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.877  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =2
08-31 00:07:08.877  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.885  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =3
08-31 00:07:08.885  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.892  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =4
08-31 00:07:08.892  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.892  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =5
08-31 00:07:08.892  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.892  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =6
08-31 00:07:08.892  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.900  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =7
08-31 00:07:08.900  2934  2934 I FMRadio_Logs:  Enter JNI_OnLoad.....
08-31 00:07:08.900  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.900  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =8
08-31 00:07:08.900  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.908  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =9
08-31 00:07:08.908  2934  2934 D FMRadioPlayer: Looper = Looper.myLooper()!
08-31 00:07:08.916  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.916  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =10
08-31 00:07:08.924  2934  2934 I FMRadio_Logs: IN JNI fmradio_native_setup
08-31 00:07:08.924  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:08.924  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.924  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =11
08-31 00:07:08.924  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.924  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =0
08-31 00:07:08.932  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.932  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =1
08-31 00:07:08.932  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.939  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =2
08-31 00:07:08.939  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.939  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =3
08-31 00:07:08.939  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.939  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =4
08-31 00:07:08.947  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.947  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =5
08-31 00:07:08.955  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.955  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =6
08-31 00:07:08.955  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.978  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =0
08-31 00:07:08.978  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.978  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =1
08-31 00:07:08.978  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:08.986  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =2
08-31 00:07:09.002  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.002  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =3
08-31 00:07:09.018  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.018  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =4
08-31 00:07:09.033  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.033  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =5
08-31 00:07:09.041  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.064  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =0
08-31 00:07:09.072  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =1
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =2
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =3
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =4
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =5
08-31 00:07:09.080  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.088  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =6
08-31 00:07:09.088  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.088  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =7
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =8
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =9
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =10
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =11
08-31 00:07:09.096  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.103  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =0
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =1
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =2
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =3
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.111  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =4
08-31 00:07:09.119  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.119  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =5
08-31 00:07:09.119  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.127  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter, getVie
w(), position =6
08-31 00:07:09.127  2090  2090 D FMRadioMain: FMRadio ChannelListAdapter getview
, set gone
08-31 00:07:09.189  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:09.221  1243  1265 I ActivityManager: Displayed activity com.motorol
a.fmradio/.FMRadioMain: 816 ms (total 12066 ms)
08-31 00:07:09.924  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:10.088  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.119  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.135  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.150  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.166  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.182  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.197  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.213  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.229  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.244  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.260  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.275  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.291  2090  2090 D FMRadioMain ChannelListView: call onDraw
08-31 00:07:10.924  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:11.925  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:12.931  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:13.932  2934  2934 W FMRadio_Logs: FMRadioStackService not published
, waiting...
08-31 00:07:14.433  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:15.434  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:16.018  1602  1602 D dalvikvm: GC_EXPLICIT freed 897 objects / 53672
 bytes in 77ms
08-31 00:07:16.432  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:17.435  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:18.436  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:19.435  2934  2934 W FMRadio_Logs: FMRadioStackService not published
, waiting...
08-31 00:07:19.939  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:20.939  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:21.197  1888  1888 D dalvikvm: GC_EXPLICIT freed 3330 objects / 1989
76 bytes in 111ms
08-31 00:07:21.943  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:22.941  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:23.940  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:24.946  2934  2934 W FMRadio_Logs: FMRadioStackService not published
, waiting...
08-31 00:07:25.440  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:26.252  1365  1365 D dalvikvm: GC_EXPLICIT freed 287 objects / 13912
 bytes in 73ms
08-31 00:07:26.448  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:27.449  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:28.450  2934  2934 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:28.786  1243  1255 W ActivityManager: Timeout executing service: Ser
viceRecord{45ce3bc0 com.motorola.android.fmradio/.FMRadioService}
08-31 00:07:28.791  1243  1255 I Process : Sending signal. PID: 2934 SIG: 9
08-31 00:07:28.799  1243  1382 I ActivityManager: Process com.motorola.android.f
mradio (pid 2934) has died.
08-31 00:07:28.799  1243  1382 W ActivityManager: Scheduling restart of crashed
service com.motorola.android.fmradio/.FMRadioService in 5000ms
08-31 00:07:31.275  1402  1402 D dalvikvm: GC_EXPLICIT freed 820 objects / 89352
 bytes in 94ms
08-31 00:07:33.807  1243  1255 I ActivityManager: Start proc com.motorola.androi
d.fmradio for service com.motorola.android.fmradio/.FMRadioService: pid=2945 uid
=1000 gids={3003, 3002, 3001, 1015, 2001}
08-31 00:07:33.900  2945  2945 E FMRadioService: onCreate() called***
08-31 00:07:33.900  2945  2945 V FMRadioService: onBind***
08-31 00:07:33.908  2945  2945 I FMRadio_Logs:  Enter JNI_OnLoad.....
08-31 00:07:33.908  2945  2945 D FMRadioPlayer: Looper = Looper.myLooper()!
08-31 00:07:33.908  2945  2945 I FMRadio_Logs: IN JNI fmradio_native_setup
08-31 00:07:33.908  2945  2945 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:34.908  2945  2945 I ServiceManager: Waiting for sevice fmradio.stac
k...
08-31 00:07:35.913  2945  2945 I ServiceManager: Waiting for sevice fmradio.stac
k...
^C
C:\android-sdk-windows\android-sdk-windows\tools>
 

slayher

Senior Member
Mar 27, 2010
310
1,270
Either the permissions are wrong, or you didnt copy the fmradioserver to /system/bin
 

facelessuser

Senior Member
Jan 31, 2009
417
1
Someone should add to the instructions to make the permissions of the files that go into system/lib 644, and the file that goes into system/bin should be 755.

I just used the other lib files and binary files in the related folders as examples. People who are new to linux environments don't know much about permissions, so its always good to post for the new guys to understand as well.
 
Last edited:

karnovaran

Senior Member
Jul 27, 2009
598
71
PDX
Thanks facelessuser, it works perfectly now. Here are the extra commands if anyone else needs them:

adb shell
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
chmod 0644 /system/lib/libFMRadio.so
chmod 0644 /system/lib/libfmradio_jni.so
chmod 0644 /system/lib/libfmradioplayer.so
chmod 0755 /system/bin/fmradioserver
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
 

knoxx

Member
Aug 11, 2010
13
0
Jerz
Thanks facelessuser, it works perfectly now. Here are the extra commands if anyone else needs them:

adb shell
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
chmod 0644 /system/lib/libFMRadio.so
chmod 0644 /system/lib/libfmradio_jni.so
chmod 0644 /system/lib/libfmradioplayer.so
chmod 0755 /system/bin/fmradioserver
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system

hey.. i dont work well with commands, but i was able to achieve root last night..
where do i extract the files to? all i get is adb: not found when trying to push the files.. any help is greatly appreciated ;]
 

karnovaran

Senior Member
Jul 27, 2009
598
71
PDX
hey.. i dont work well with commands, but i was able to achieve root last night..
where do i extract the files to? all i get is adb: not found when trying to push the files.. any help is greatly appreciated ;]

Extract the files and open up the system folder, where you'll have app, bin, and lib folders. Copy those 3 folders into your sdk tools folder. Then:

cd c:\wherever-your-sdk-tools-folder-is
adb devices
adb remount
adb push app/FMRadio.apk /system/app
adb push app/FMRadioService.apk /system/app
adb push bin/fmradioserver /system/bin
adb push lib/libFMRadio.so /system/lib
adb push lib/libfmradio_jni.so /system/lib
adb push lib/libfmradioplayer.so /system/lib
adb remount
adb shell
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
chmod 0644 /system/lib/libFMRadio.so
chmod 0644 /system/lib/libfmradio_jni.so
chmod 0644 /system/lib/libfmradioplayer.so
chmod 0755 /system/bin/fmradioserver
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system
exit
 

djhcmd

Member
Oct 9, 2009
22
0
It does not seem that I have kept su privledges through the shell. If I adb remount I get operation not permitted and if I try and su while in a shell I get permission denied. Do we have to use the exploit everytime we want to have privledges through adb?

EDIT: If anyone else is having this problem, pay attention more (my issue) after you type su in the shell the first time back after rooting the phone will ask you to give adb SU privledges...click remember...issue solved.
 
Last edited:

jj702561

Senior Member
Aug 31, 2010
61
2
Texas
honestly i dont think that this could xmit because even if their is a transmitter inside the phone it doesn't seem to have a good enough antenna to receive radio from my porch... then there is the whole issue of what type of an amplifier.... maybe just an issue of a home brew external usb device... but im not holding my breath for someone to want this that badly
 

JonandRoid

Senior Member
Aug 31, 2010
238
11
Durham, NC
Is there any way to even open the app without having headphones plugged in? Seems kinda pointless if you don't have headphones...I don't even own a pair of headphones...never needed them....

Sent from my DROID2 using XDA App
 

facelessuser

Senior Member
Jan 31, 2009
417
1
Is there any way to even open the app without having headphones plugged in? Seems kinda pointless if you don't have headphones...I don't even own a pair of headphones...never needed them....

Sent from my DROID2 using XDA App

Any FM radio needs a sufficient antenna. Different frequency generally will need different size antennas. FM has longer wave lengths than cell signals, so it needs a bigger antenna. All cell phones that come with FM radios always use the headphone wire as the antenna. 3rd party radios for ipods are found sold on headphones by no coincident.

The app won't let you start it without a headphone because it would be pointless without it; the headphones are your antenna.
 

JonandRoid

Senior Member
Aug 31, 2010
238
11
Durham, NC
Oh okay, that makes sense...I used root explorer and just moved the files to their respective directories and it opens and everything seems to work but it just keeps having this loading screen. Something along the lines of processing ____ect. I don't remember what it said exactly but I can't get any radio signal at all even with the headphones plugged in..I'm not sure where I went wrong.

Sent from my DROID2 using XDA App
 

facelessuser

Senior Member
Jan 31, 2009
417
1
Oh okay, that makes sense...I used root explorer and just moved the files to their respective directories and it opens and everything seems to work but it just keeps having this loading screen. Something along the lines of processing ____ect. I don't remember what it said exactly but I can't get any radio signal at all even with the headphones plugged in..I'm not sure where I went wrong.

Sent from my DROID2 using XDA App

Permissions Permissions. These are very important in Linux based systems.

Code:
adb shell
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
chmod 0644 /system/lib/libFMRadio.so
chmod 0644 /system/lib/libfmradio_jni.so
chmod 0644 /system/lib/libfmradioplayer.so
chmod 0755 /system/bin/fmradioserver
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system

You can also change the permissions in a root file explorer if you have one and are familiar with how to do it in the explorer.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 3
    Instuctions to get FM Radio on Droid2

    1. Droid2 must be rooted. Remount the /system to RW

    2. Unzip the archive, and use abd push to put the files in the appropriate folders.
    cd system

    a. adb push app/FMRadio.apk /system/app
    b. adb push app/FMRadioService.apk /system/app
    c. adb push bin/fmradioserver /system/bin
    d. adb push lib/libFMRadio.so /system/lib
    e. adb push lib/libfmradio_jni.so /system/lib
    f. adb push lib/libfmradioplayer.so /system/lib

    3. Remount /system to ro
    4. Plug in headphones.
    5. Run FMradio
    6 ???
    7. Profit!

    For me, I live in a crappy radio area, so I was only able to pick up 2 stations. YMMV.

    As always I will not be responsible for any damage, pregnancies, or missing items from your home.

    Thanks!

    Slayher
    1
    Forgot the Link

    Forgot the link..
    LINKS! URL -> android.antbox.org/slayher/FMRadio_droid2.zip
    1
    I'm going to do some more digging about the Droid 1; if it uses the same Broadcom chip as the others - the HTC Desire has been FM-radioed, too - it's not at all impossible. But there doesn't seem to be a consensus yet regarding which chip it has.
    A little research shows that although the Droid 1 has the necessary wireless chip, there is no physical connection to the headphone port, so it can't generate sound and doesn't have an antenna, making it, you know, not that useful. So for the Droid 1, possibly a lost cause, unless my sources are incorrect, which I really hope they are! ;)

    These chips apparently can transmit FM, as well. Seriously, why don't these phones include these features? These seem like pretty killer features; are they really not worth the extra work to enable, connect, and code for?
    1
    Here's another way w/out SDK, and full instructions

    Install/setup FM Radio on Droid2 (most info from orignal post by Slayher, 08/31/10)

    I did this on a Droid 2, FRG22d (new VZW stock phone, which I rooted)
    I added step by step instructions for those not as familiar with Linux systems and the mount and filesysetm permission commands.
    I did this almost completely on my droid 2 via the built-in terminal emulator after copying the necessary files to the sdcard, this is how my instructions are setup, but you could also use the SDK and push the files manually as long as you have root access to the SDK shell program on your droid. The root access is required because you need to manually change permissions on several files. Do this at your own risk, the only way I figure you could mess up is if you miss-type the mounting commands, or have some sort of power failure in the middle of it.

    First go here >> android.antbox.org/slayher/FMRadio_droid2.zip
    Grab the file and unzip it on your computer. Your Droid 2 has the built-in radio hardware, I have no idea why they don’t send it with the software to run it (probably just a selling point for other models). When you unzip the file you should have 3 directories: /app, /bin, and /lib.
    Then put the files on your SD card, I did this in USB card-reader mode and put all three folders in a directory I called “fmradio”. These instructions assume you have the same directory on your sdcard.
    Open the terminal emulator program on your droid 2 and type these commands carefully, you will first see the prompt $. There are faster ways to do this, but these commands are safer and harder to mess up.


    su (this will bring up the # prompt with root access)
    cd /sdcard/fmradio/app
    cp fmradioservice.apk /system/app (copy files to the android sysetm directory)
    cp fmradio.apk /system/app
    cd /sdcard/fmradio/bin
    cp fmradioserver /system/bin
    mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system (mount rw for permissions)
    chmod 0755 fmradioserver
    cd /sdcard/fmradio/lib
    cp libfmradio.so /system/lib
    cp libfmradio_jni.so /system /lib (that is a j in the filename after libfmradio_)
    cp libfmradioplayer.so /system/lib
    cd /system/lib
    chmod 0644 libfmradio.so
    chmod 0644 libfmradio_jni.so
    chmod 0644 libfmradioplayer.so
    mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system (remount back to ro)
    exit
    exit

    Has a nice interface, and will scan and store stations, also reads the text ID for the stations. Works great in the Seattle area.

    Michael
    1
    To help clear up and consolidate information:

    Permissions
    Permission in *nix, which included Android, work like so. Every file recognizes three boundaries: user, group, others. When doing a long listing of a file (ls -l) the first set of information displays permission. For example
    Code:
    -rwxr-xr-x
    The line above should be read in four parts.
    • The first dash indicates whether a file is a directory or no. If it's a 'd' then the file is a directory; a dash (-) means it's just a file.
    • The next three spots (2, 3, 4) indicate the permissions for the user, i.e. the owner of the file.
    • The next three spots (5, 6, 7) indicate the permissions for the group; each file has a group and each user can be part of multiple groups.
    • The last three spots (8, 9, 10) indicate the permissions for everyone else; if you're not the file's owner or part of its group these are the permissions you get.
    r means you can read the file. w means you can write to the file. x means you can execute the file or move into that directory.

    So what's up with the numbers like 644 in the commands listed in other posts? The chmod command changes the permissions of a file; it takes the intended permissions as a group of three octals. Each digit is an octal number that corresponds to a certain mixture of permissions. To decode a chmod argument like 644 let's break it down:

    • Each number in 644 corresponds to one of the same three groups above: user, group, others.
    • The order is the same as in the long listing: 6 = user, 4 = group, 4 = others.
    • To figure out how a single number translates into the three permissions (read, write, execute) you have to look at each permission in binary. This is a little complex so bear with me:
      1. Start with 0.
      2. If execute is on add 1.
      3. If write is on add 2.
      4. If read is on add 4.
      5. Using these rules you will result in some number between 0 and 7 (hence the octal part). A value of 6 can only be created by turning on write and read. A value of 5 would be read and execute.
    • If you do this for each digit in the argument you can determine just what permissions the file should have. 644 means the user has read and write, group has read, and others have read. 755 means the user has read, write, and execute; user has read and execute; and others have read and execute.

    For FM Radio specifically only bin/fmradioserver should have execute permissions. Write permissions on each file should be given solely to user. Read permissions should be granted to user, group, and others.

    It breaks down as thus:
    app/FMRadio.apk -rw-r--r-- (chmod 644)
    app/FMRadioService.apk -rw-r--r-- (chmod 644)
    bin/fmradioserver -rwx-r-x-r-x (chmod 755)
    lib/libfmradio_jni.so -rw-r--r-- (chmod 644)
    lib/libfmradioplayer.so -rw-r--r-- (chmod 644)
    lib/libFMRadio.so -rw-r--r-- (chmod 644)

    Capitalization is important. *nix systems are case sensitive when it comes to file names.

    Fission ROM
    This just won't work on Fission. There's probably some library Fission isn't including that the service expects. Fission does delete a lot of stuff when you install it so I assume something in there is needed.