[HTC 10 Questions & Answers] Captain_Throwback:
The 10 has all the framework included already. The only thing is was missing was the apps.

EDIT: NextRadio gave me some additional logging, but I think most of it is just app-related. It still gets stuck at the "waiting for callback" stage:

05-20 14:30:27.555 2265 3281 D RadioAdapterService: runCommandAsync aborted:com.nextradioapp.nextradio.action.PLAY,98900000
05-20 14:30:27.555 2265 3281 D FmRadioFramework: powerOffAsync()
05-20 14:30:27.555 2265 3281 D HtcWrapFMRadio: getIsPoweredOn
05-20 14:30:27.555 2265 3281 D HtcWrapFMRadio: powerOffAsync
05-20 14:30:27.555 2265 3281 D HtcWrapFMRadio: buildIntent intent.setComponent
05-20 14:30:27.558 6956 6956 I BaseFMRadioService: onStartCommand(), startId =7
05-20 14:30:27.559 1614 3472 I MediaFocusControl: AudioFocus abandonAudioFocus() from android.media.AudioManager@8b92e14org.nablabs.libFmRadioImpl.FmRadio$1@a5ae6bd
05-20 14:30:27.560 6956 7018 I FMRadioService: onHandleIntentMessage(startId = 7)
05-20 14:30:27.560 6956 7018 I FMRadioService: FMTunerState.current_state , state = (1)
05-20 14:30:27.560 6956 7018 I FMRadioService: FM chip is turned On or turning On, enqueue() command , current state = (1)
05-20 14:30:27.560 6956 7018 I FMRadioService: enqueueFMCommand(command = 2), msg.arg1 = -1, isSettingVolume = false
05-20 14:30:27.560 6956 7018 I FMRadioService: ~~~~~~~ Add a FMCommand to queue:
05-20 14:30:27.560 6956 7018 I FMRadioService: After FMCommandQueue.add() -- Q size()= 6
05-20 14:30:27.560 6956 7018 I FMRadioService: processFMCommand()-ENTER
05-20 14:30:27.560 6956 7018 I FMRadioService: processFMCommand(), mActiveCommand = 1
05-20 14:30:27.560 6956 7018 I FMRadioService: processFMCommand()--WAIT_CALLBACK!!!!!!! Command is on processing and wait for Callabck
05-20 14:30:27.560 6956 7018 I FMRadioService: processFMCommand()--EXIT
05-20 14:30:27.564 2265 3281 E RadioAdapterService: RadioException
05-20 14:30:27.564 2265 3281 E RadioAdapterService: FM command aborted:htc_pmewl
05-20 14:30:27.567 2265 3281 D RadioAdapterService: shutDownCompletely
05-20 14:30:27.572 2265 3281 D RadioAdapterService: shutDownCompletely
05-20 14:30:27.581 2265 2265 D NextRadioAndroid: <!> STOP LISTENING
05-20 14:30:27.581 2265 2265 I System.out: DBG: NextRadioCore:stopListening
05-20 14:30:27.581 2265 2265 D UIService: updateNotificationAndWidgets
05-20 14:30:27.581 2265 2265 W UIService: updateNotificationAndWidgets - mCurrentEventEmpty, doing nothing
05-20 14:30:27.583 2265 3635 I System.out: DBG: RabbitMQWrapperprimary:interrupt
05-20 14:30:27.583 2265 3635 I System.out: WRN: NextRadioCore:primary - onRabbitMQDisconnected
05-20 14:30:27.583 2265 2265 I System.out: DBG: Widget2RowsLarge:notifyChange-event==null:true
05-20 14:30:27.585 2265 2265 I System.out: DBG: Widget2Rows:notifyChange-event==null:true
05-20 14:30:27.591 1614 3472 I PackageManager: setEnabledSetting: pkgName=com.htc.mobiledata, clsName=com.htc.mobiledata.receivers.ReceiveIntentFromWapPush, newState=2, flags=1, userID=0, callingPkg=null, pid=4382, uid=10031
05-20 14:30:27.591 2265 2265 I System.out: DBG: Widget2RowsSmall:notifyChange-event==null:true
05-20 14:30:27.603 2265 2265 D RadioAdapterService: onDestroy
05-20 14:30:27.604 2265 2265 D NextRadioAndroid: <!> STOP LISTENING
05-20 14:30:27.604 2265 2265 I System.out: DBG: NextRadioCore:stopListening
05-20 14:30:27.604 2265 2265 D UIService: updateNotificationAndWidgets
05-20 14:30:27.604 2265 2265 W UIService: updateNotificationAndWidgets - mCurrentEventEmpty, doing nothing
05-20 14:30:27.606 2265 2265 I System.out: DBG: Widget2RowsLarge:notifyChange-event==null:true
05-20 14:30:27.612 2265 3635 D libc : [NET] android_getaddrinfofornetcontext+,hn 18(0x6170692e746167),sn(),hints(known),family 0,flags 1024, proc=com.nextradioapp.nextradio
05-20 14:30:27.612 2265 3635 D libc : [NET] android_getaddrinfo_proxy get netid:0
05-20 14:30:27.612 2265 3636 I System.out: DBG: RabbitMQWrapperprimary:interrupt
05-20 14:30:27.612 2265 3636 I System.out: WRN: NextRadioCore:primary - onRabbitMQDisconnected
05-20 14:30:27.613 849 3637 D libc : [NET] android_getaddrinfofornetcontext+,hn 18(0x6170692e746167),sn(),hints(known),family 0,flags 1024, proc=/system/bin/netd
05-20 14:30:27.614 2265 2265 I System.out: DBG: Widget2Rows:notifyChange-event==null:true
05-20 14:30:27.614 849 3637 D libc : [NET] android_getaddrinfo_proxy-, fd error: Success(0)
05-20 14:30:27.615 849 3637 D libc : [NET] _dns_getaddrinfo+, netid:100, mark:917604
05-20 14:30:27.615 849 3637 D libc : [NET] _dns_getaddrinfo-, (NS_SUCCESS)
05-20 14:30:27.615 2265 3635 D libc : [NET] android_getaddrinfo_proxy-, success
05-20 14:30:27.616 2265 2265 I System.out: DBG: Widget2RowsSmall:notifyChange-event==null:true
05-20 14:30:27.626 2265 2265 D UIService: onDestroy
05-20 14:30:27.640 2265 2265 E ActivityThread: Service com.nextradioapp.nextradio.services.RadioAdapterService_ has leaked IntentReceiver org.nablabs.libFmRadioImpl.FmRadio$2@e3004b2 that was originally registered here. Are you missing a call to unregisterReceiver()?
05-20 14:30:27.640 2265 2265 E ActivityThread: android.app.IntentReceiverLeaked: Service com.nextradioapp.nextradio.services.RadioAdapterService_ has leaked IntentReceiver org.nablabs.libFmRadioImpl.FmRadio$2@e3004b2 that was originally registered here. Are you missing a call to unregisterReceiver()?
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:968)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:732)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1180)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ContextImpl.registerReceiver(ContextImpl.java:1160)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ContextImpl.registerReceiver(ContextImpl.java:1154)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:554)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at org.nablabs.libFmRadioImpl.FmRadio.setRadioCallback(FmRadio.java:221)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at com.nextradioapp.radioadapters.FmRadioFramework.setRadioCallback(FmRadioFramework.java:300)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at com.nextradioapp.nextradio.services.RadioAdapterService.handleStartCommand(RadioAdapterService.java:196)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at com.nextradioapp.nextradio.services.RadioAdapterService.onStartCommand(RadioAdapterService.java:323)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3195)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ActivityThread.access$2200(ActivityThread.java:150)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1510)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.os.Handler.dispatchMessage(Handler.java:102)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.os.Looper.loop(Looper.java:168)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at android.app.ActivityThread.main(ActivityThread.java:5885)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at java.lang.reflect.Method.invoke(Native Method)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:819)
05-20 14:30:27.640 2265 2265 E ActivityThread:	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:709)

EDIT 2: Spirit2 throws an "Unknown Device" error, which I'd expect since [MENTION=3575078]mikereidis[/MENTION] probably doesn't have an HTC 10 to work on.