Discussion:
[Freetel-codec2] Digital voice using an Android mobile phone
Adrian Musceac
2016-06-04 08:43:11 UTC
Permalink
Hi all,
I was thinking the other day, that it would be nice to pair a cheap Android
smartphone with a standard analog FM handheld radio (maybe a Baofeng) and
upgrade your aging FM transceiver to a state of the art digital radio with
Bluetooth, GPS, the ability to bridge voice through a VoIP channel using
the Wifi or 3G connection and many other features.

So what is stopping us from doing that? Not very much apparently. All the
bits and pieces are there already, David and Brady did a huge amount of
work on the VHF 2400 modes, so sending a 1300 bit/s stream of Codec2 over
the air using a standard handheld should be a breeze. But we might need to
be able to also talk APRS to send coordinates, so switching between modes
should be easy.

Or, why not connect a bog standard Android phone to a credid card sized SDR
frontend like the USRP B205-mini and step into the future of pocket SDR
radio from DC to daylight. Gnuradio already has very good optimizations for
ARM v7 using the neon_hardfp_orc Volk kernel, and it can only get better
from here.

So, I hacked together a few scripts to pair a cheap Chinese cellphone with
my analog FM handheld and send digital voice using gnuradio and Codec2.
Introducing project DroidDV - digital voice through a standard smartphone.
Now, if only I could find a couple of enthusiastic Android developers to
create all the software and wrap it around in a nice looking interface to
make it marketable.

Here's a video showing what can be done in a few hours:


Cheers,
Adrian
David Rowe
2016-06-04 21:04:00 UTC
Permalink
Wow that's really awesome Adrian! Great job at integrating all of those
modules with Android. How well does the PTT work, e.g. can you use it
for real QSOs?

Cheers,

David
Post by Adrian Musceac
Hi all,
I was thinking the other day, that it would be nice to pair a cheap
Android smartphone with a standard analog FM handheld radio (maybe a
Baofeng) and upgrade your aging FM transceiver to a state of the art
digital radio with Bluetooth, GPS, the ability to bridge voice through a
VoIP channel using the Wifi or 3G connection and many other features.
So what is stopping us from doing that? Not very much apparently. All
the bits and pieces are there already, David and Brady did a huge amount
of work on the VHF 2400 modes, so sending a 1300 bit/s stream of Codec2
over the air using a standard handheld should be a breeze. But we might
need to be able to also talk APRS to send coordinates, so switching
between modes should be easy.
Or, why not connect a bog standard Android phone to a credid card sized
SDR frontend like the USRP B205-mini and step into the future of pocket
SDR radio from DC to daylight. Gnuradio already has very good
optimizations for ARM v7 using the neon_hardfp_orc Volk kernel, and it
can only get better from here.
So, I hacked together a few scripts to pair a cheap Chinese cellphone
with my analog FM handheld and send digital voice using gnuradio and Codec2.
Introducing project DroidDV - digital voice through a standard smartphone.
Now, if only I could find a couple of enthusiastic Android developers to
create all the software and wrap it around in a nice looking interface
to make it marketable.
http://youtu.be/JibJhNs13qw
Cheers,
Adrian
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Adrian Musceac
2016-06-04 22:10:05 UTC
Permalink
Thanks David, but I cheated a little. It's not really Android, more like an
unholy mixture of Android and GNU/Linux.

The way it works is you pop in an SD card, and an Android app starts a
Debian container which runs Gnuradio, FreeDV and possibly also any
other Linux amateur radio software. The host Android OS is blissfully
unaware of what is happening underneath, and this also means you
don't have to go destructive on your phone.
The downside is you lose temporarily the ability to make calls, because
Linux takes over the whole sound system. This is why I'd like to see
some Android developers stepping up.

As for the PTT, it's currently not operational, because the audio out line
has a weird pin-out, with one pin being used for the button on the
headphones, which is not making my Yaesu FT60 happy. I'll probably use
that button for the radio PTT and to trigger the application itself. A
different radio like the 857 might require a different cable, and I'm
terrible at hardware design.

Cheers,
Adrian
Post by David Rowe
Wow that's really awesome Adrian! Great job at integrating all of those
modules with Android. How well does the PTT work, e.g. can you use it
for real QSOs?
Cheers,
David
Post by Adrian Musceac
Hi all,
I was thinking the other day, that it would be nice to pair a cheap
Android smartphone with a standard analog FM handheld radio
(maybe a
Post by David Rowe
Post by Adrian Musceac
Baofeng) and upgrade your aging FM transceiver to a state of the art
digital radio with Bluetooth, GPS, the ability to bridge voice through a
VoIP channel using the Wifi or 3G connection and many other
features.
Post by David Rowe
Post by Adrian Musceac
So what is stopping us from doing that? Not very much apparently. All
the bits and pieces are there already, David and Brady did a huge amount
of work on the VHF 2400 modes, so sending a 1300 bit/s stream of Codec2
over the air using a standard handheld should be a breeze. But we might
need to be able to also talk APRS to send coordinates, so
switching
Post by David Rowe
Post by Adrian Musceac
between modes should be easy.
Or, why not connect a bog standard Android phone to a credid
card sized
Post by David Rowe
Post by Adrian Musceac
SDR frontend like the USRP B205-mini and step into the future of pocket
SDR radio from DC to daylight. Gnuradio already has very good
optimizations for ARM v7 using the neon_hardfp_orc Volk kernel, and it
can only get better from here.
So, I hacked together a few scripts to pair a cheap Chinese
cellphone
Post by David Rowe
Post by Adrian Musceac
with my analog FM handheld and send digital voice using gnuradio
and
Post by David Rowe
Post by Adrian Musceac
Codec2. Introducing project DroidDV - digital voice through a
standard
Post by David Rowe
Post by Adrian Musceac
smartphone. Now, if only I could find a couple of enthusiastic
Android
Post by David Rowe
Post by Adrian Musceac
developers to create all the software and wrap it around in a nice
looking interface to make it marketable.
http://youtu.be/JibJhNs13qw
Cheers,
Adrian
--------------------------------------------------------------------------
---- What NetFlow Analyzer can do for you? Monitors network
bandwidth and
Post by David Rowe
Post by Adrian Musceac
traffic patterns at an interface-level. Reveals which users, apps,
and
Post by David Rowe
Post by Adrian Musceac
protocols are consuming the most bandwidth. Provides multi-
vendor support
Post by David Rowe
Post by Adrian Musceac
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by David Rowe
Post by Adrian Musceac
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
----------------------------------------------------------------------------
-- What NetFlow Analyzer can do for you? Monitors network bandwidth
and
Post by David Rowe
traffic patterns at an interface-level. Reveals which users, apps, and
protocols are consuming the most bandwidth. Provides multi-vendor
support
Post by David Rowe
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by David Rowe
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Brady O'Brien
2016-06-05 05:52:09 UTC
Permalink
If someone did want to write a proper android app, the FreeDV API is pretty
straightforward and should run just fine under the NDK, though I'm not sure
how one would work around the dual audio card requirement.
Post by Adrian Musceac
Thanks David, but I cheated a little. It's not really Android, more like an
unholy mixture of Android and GNU/Linux.
The way it works is you pop in an SD card, and an Android app starts a
Debian container which runs Gnuradio, FreeDV and possibly also any
other Linux amateur radio software. The host Android OS is blissfully
unaware of what is happening underneath, and this also means you
don't have to go destructive on your phone.
The downside is you lose temporarily the ability to make calls, because
Linux takes over the whole sound system. This is why I'd like to see
some Android developers stepping up.
As for the PTT, it's currently not operational, because the audio out line
has a weird pin-out, with one pin being used for the button on the
headphones, which is not making my Yaesu FT60 happy. I'll probably use
that button for the radio PTT and to trigger the application itself. A
different radio like the 857 might require a different cable, and I'm
terrible at hardware design.
Cheers,
Adrian
Post by David Rowe
Wow that's really awesome Adrian! Great job at integrating all of
those
Post by David Rowe
modules with Android. How well does the PTT work, e.g. can you use
it
Post by David Rowe
for real QSOs?
Cheers,
David
Post by Adrian Musceac
Hi all,
I was thinking the other day, that it would be nice to pair a cheap
Android smartphone with a standard analog FM handheld radio
(maybe a
Post by David Rowe
Post by Adrian Musceac
Baofeng) and upgrade your aging FM transceiver to a state of the
art
Post by David Rowe
Post by Adrian Musceac
digital radio with Bluetooth, GPS, the ability to bridge voice through
a
Post by David Rowe
Post by Adrian Musceac
VoIP channel using the Wifi or 3G connection and many other
features.
Post by David Rowe
Post by Adrian Musceac
So what is stopping us from doing that? Not very much apparently.
All
Post by David Rowe
Post by Adrian Musceac
the bits and pieces are there already, David and Brady did a huge
amount
Post by David Rowe
Post by Adrian Musceac
of work on the VHF 2400 modes, so sending a 1300 bit/s stream of
Codec2
Post by David Rowe
Post by Adrian Musceac
over the air using a standard handheld should be a breeze. But we
might
Post by David Rowe
Post by Adrian Musceac
need to be able to also talk APRS to send coordinates, so
switching
Post by David Rowe
Post by Adrian Musceac
between modes should be easy.
Or, why not connect a bog standard Android phone to a credid
card sized
Post by David Rowe
Post by Adrian Musceac
SDR frontend like the USRP B205-mini and step into the future of
pocket
Post by David Rowe
Post by Adrian Musceac
SDR radio from DC to daylight. Gnuradio already has very good
optimizations for ARM v7 using the neon_hardfp_orc Volk kernel,
and it
Post by David Rowe
Post by Adrian Musceac
can only get better from here.
So, I hacked together a few scripts to pair a cheap Chinese
cellphone
Post by David Rowe
Post by Adrian Musceac
with my analog FM handheld and send digital voice using gnuradio
and
Post by David Rowe
Post by Adrian Musceac
Codec2. Introducing project DroidDV - digital voice through a
standard
Post by David Rowe
Post by Adrian Musceac
smartphone. Now, if only I could find a couple of enthusiastic
Android
Post by David Rowe
Post by Adrian Musceac
developers to create all the software and wrap it around in a nice
looking interface to make it marketable.
http://youtu.be/JibJhNs13qw
Cheers,
Adrian
--------------------------------------------------------------------------
Post by David Rowe
Post by Adrian Musceac
---- What NetFlow Analyzer can do for you? Monitors network
bandwidth and
Post by David Rowe
Post by Adrian Musceac
traffic patterns at an interface-level. Reveals which users, apps,
and
Post by David Rowe
Post by Adrian Musceac
protocols are consuming the most bandwidth. Provides multi-
vendor support
Post by David Rowe
Post by Adrian Musceac
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by David Rowe
Post by Adrian Musceac
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
----------------------------------------------------------------------------
Post by David Rowe
-- What NetFlow Analyzer can do for you? Monitors network bandwidth
and
Post by David Rowe
traffic patterns at an interface-level. Reveals which users, apps, and
protocols are consuming the most bandwidth. Provides multi-vendor
support
Post by David Rowe
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by David Rowe
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Geordie Millar
2016-06-05 09:35:35 UTC
Permalink
Usb OTG with a sound card plugged in?
Post by Brady O'Brien
If someone did want to write a proper android app, the FreeDV API is
pretty straightforward and should run just fine under the NDK, though I'm
not sure how one would work around the dual audio card requirement.
Post by Adrian Musceac
Thanks David, but I cheated a little. It's not really Android, more like an
unholy mixture of Android and GNU/Linux.
The way it works is you pop in an SD card, and an Android app starts a
Debian container which runs Gnuradio, FreeDV and possibly also any
other Linux amateur radio software. The host Android OS is blissfully
unaware of what is happening underneath, and this also means you
don't have to go destructive on your phone.
The downside is you lose temporarily the ability to make calls, because
Linux takes over the whole sound system. This is why I'd like to see
some Android developers stepping up.
As for the PTT, it's currently not operational, because the audio out line
has a weird pin-out, with one pin being used for the button on the
headphones, which is not making my Yaesu FT60 happy. I'll probably use
that button for the radio PTT and to trigger the application itself. A
different radio like the 857 might require a different cable, and I'm
terrible at hardware design.
Cheers,
Adrian
Post by David Rowe
Wow that's really awesome Adrian! Great job at integrating all of
those
Post by David Rowe
modules with Android. How well does the PTT work, e.g. can you use
it
Post by David Rowe
for real QSOs?
Cheers,
David
Post by Adrian Musceac
Hi all,
I was thinking the other day, that it would be nice to pair a cheap
Android smartphone with a standard analog FM handheld radio
(maybe a
Post by David Rowe
Post by Adrian Musceac
Baofeng) and upgrade your aging FM transceiver to a state of the
art
Post by David Rowe
Post by Adrian Musceac
digital radio with Bluetooth, GPS, the ability to bridge voice through
a
Post by David Rowe
Post by Adrian Musceac
VoIP channel using the Wifi or 3G connection and many other
features.
Post by David Rowe
Post by Adrian Musceac
So what is stopping us from doing that? Not very much apparently.
All
Post by David Rowe
Post by Adrian Musceac
the bits and pieces are there already, David and Brady did a huge
amount
Post by David Rowe
Post by Adrian Musceac
of work on the VHF 2400 modes, so sending a 1300 bit/s stream of
Codec2
Post by David Rowe
Post by Adrian Musceac
over the air using a standard handheld should be a breeze. But we
might
Post by David Rowe
Post by Adrian Musceac
need to be able to also talk APRS to send coordinates, so
switching
Post by David Rowe
Post by Adrian Musceac
between modes should be easy.
Or, why not connect a bog standard Android phone to a credid
card sized
Post by David Rowe
Post by Adrian Musceac
SDR frontend like the USRP B205-mini and step into the future of
pocket
Post by David Rowe
Post by Adrian Musceac
SDR radio from DC to daylight. Gnuradio already has very good
optimizations for ARM v7 using the neon_hardfp_orc Volk kernel,
and it
Post by David Rowe
Post by Adrian Musceac
can only get better from here.
So, I hacked together a few scripts to pair a cheap Chinese
cellphone
Post by David Rowe
Post by Adrian Musceac
with my analog FM handheld and send digital voice using gnuradio
and
Post by David Rowe
Post by Adrian Musceac
Codec2. Introducing project DroidDV - digital voice through a
standard
Post by David Rowe
Post by Adrian Musceac
smartphone. Now, if only I could find a couple of enthusiastic
Android
Post by David Rowe
Post by Adrian Musceac
developers to create all the software and wrap it around in a nice
looking interface to make it marketable.
http://youtu.be/JibJhNs13qw
Cheers,
Adrian
--------------------------------------------------------------------------
Post by David Rowe
Post by Adrian Musceac
---- What NetFlow Analyzer can do for you? Monitors network
bandwidth and
Post by David Rowe
Post by Adrian Musceac
traffic patterns at an interface-level. Reveals which users, apps,
and
Post by David Rowe
Post by Adrian Musceac
protocols are consuming the most bandwidth. Provides multi-
vendor support
Post by David Rowe
Post by Adrian Musceac
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by David Rowe
Post by Adrian Musceac
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
----------------------------------------------------------------------------
Post by David Rowe
-- What NetFlow Analyzer can do for you? Monitors network bandwidth
and
Post by David Rowe
traffic patterns at an interface-level. Reveals which users, apps, and
protocols are consuming the most bandwidth. Provides multi-vendor
support
Post by David Rowe
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by David Rowe
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Jeroen Vreeken
2016-06-05 13:59:11 UTC
Permalink
Hi Adrian,

Sounds great!
Post by Adrian Musceac
So what is stopping us from doing that? Not very much apparently. All
the bits and pieces are there already, David and Brady did a huge
amount of work on the VHF 2400 modes, so sending a 1300 bit/s stream
of Codec2 over the air using a standard handheld should be a breeze.
But we might need to be able to also talk APRS to send coordinates, so
switching between modes should be easy.
I already did some work for APRS integration. I am calling it 'FPRS' and
sending a postion update can already be done with two data frames
(80ms), adding more stuff like direction and altitude will ofcourse add
some more.

To get it short the protocol is binary instead of text based like APRS,
but I also made an fprs2aprs_gate which will listen for FPRS packets and
will translate them to APRS packets before sending them to the APRS-IS
network.
freedv_eth is the software I use for transmitting/receiving freedv using
soundcards and it can handle NMEA data from a GPS receiver and transmit
it together with voice and other data. It might be nice example you can
use in DroidDV.

Very limited documentation can be found at:
http://video.vreeken.net/~dml/fprs.html

The code (fprs2aprs_gate and freedv_eth) can be found in my eth_ar
archive: http://video.vreeken.net/~pe1rxq/eth_ar.git/

73,
Jeroen PE1RXQ
Adrian Musceac
2016-06-05 19:56:45 UTC
Permalink
Hi Jeroen,

Again, your documentation is great, I wish I had the time to do such a
thing for my code as well.

I am somewhat biased in favor of running a Gnuradio modem though,
because it is SDR ready, and the implementation/ testing of a new
modem is very easy. Right now, the CPU footprint of Gnuradio is much
heavier than that of FreeDV, especially if the graph runs at a high
sample rate, so that is the major obstacle against me pushing for a
wideband frontend like the USRP.

For Android phones, the main limitation is CPU. There is a very hard
decision to make when creating a new application. On one hand, the
Android userland is quite poor compared to GNU/Linux, on the other
hand applications are much more user friendly. I loathe developing
using the Android SDK due to past experiences but I think if FreeDV is
to be made marketable, it should be a native Android app.

Right now, I am looking into providing SD card images with a complete
setup for digital voice (implemented), text messages (implemented),
VoIP bridging (implemented), slow speed AX.25 (not implemented yet),
APRS messages (being implemented right now) and functions for
repeater control (half implemented). The setup should be able to run in
both GUI mode as well as console only and be able to switch between
analog/digital on demand. Analog voice is using high quality Opus and
digital voice is forwarded without transcoding as Codec2 packets.
More modems can be implemented in Gnuradio for e.g. DMR and D-STAR
compatibility.

Various proprietary aspects of parts of Android slow down development
because it is hard to access certain data in the Linux container.
I will have a look at your API in the next few days and see if I can use it
myself. Meanwhile, the Gnuradio modems are available on Github, but
the rest is not pushed yet due to time constraints.

Cheers,
Adrian
Post by Jeroen Vreeken
Hi Adrian,
Sounds great!
Post by Adrian Musceac
So what is stopping us from doing that? Not very much apparently. All
the bits and pieces are there already, David and Brady did a huge
amount of work on the VHF 2400 modes, so sending a 1300 bit/s stream
of Codec2 over the air using a standard handheld should be a
breeze.
Post by Jeroen Vreeken
Post by Adrian Musceac
But we might need to be able to also talk APRS to send
coordinates, so
Post by Jeroen Vreeken
Post by Adrian Musceac
switching between modes should be easy.
I already did some work for APRS integration. I am calling it 'FPRS' and
sending a postion update can already be done with two data frames
(80ms), adding more stuff like direction and altitude will ofcourse add
some more.
To get it short the protocol is binary instead of text based like APRS,
but I also made an fprs2aprs_gate which will listen for FPRS packets and
will translate them to APRS packets before sending them to the
APRS-IS
Post by Jeroen Vreeken
network.
freedv_eth is the software I use for transmitting/receiving freedv using
soundcards and it can handle NMEA data from a GPS receiver and
transmit
Post by Jeroen Vreeken
it together with voice and other data. It might be nice example you can
use in DroidDV.
http://video.vreeken.net/~dml/fprs.html
The code (fprs2aprs_gate and freedv_eth) can be found in my eth_ar
archive: http://video.vreeken.net/~pe1rxq/eth_ar.git/
73,
Jeroen PE1RXQ
----------------------------------------------------------------------------
-- What NetFlow Analyzer can do for you? Monitors network bandwidth
and
Post by Jeroen Vreeken
traffic patterns at an interface-level. Reveals which users, apps, and
protocols are consuming the most bandwidth. Provides multi-vendor
support
Post by Jeroen Vreeken
for NetFlow, J-Flow, sFlow and other flows. Make informed decisions
using
Post by Jeroen Vreeken
capacity planning reports.
https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Freetel-codec2 mailing list
https://lists.sourceforge.net/lists/listinfo/freetel-codec2
Continue reading on narkive:
Loading...