Log in
Register
Menu
Log in
Register
Home
What's new
Latest activity
Authors
Forums
New posts
Search forums
What's new
New posts
Latest activity
Members
Current visitors
New posts
Search forums
Menu
Log in
Register
Install the app
Install
Forums
Miscellaneous Sections
Tech Head - The Technology Section
SDR radio, Software Defined Radio
Modulating DAB+ from Satellite with HackRF One
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="Adam792" data-source="post: 1090184" data-attributes="member: 330868"><p>To set up the DAB transmission on the Pi with a HackRF One, I did the following -</p><p></p><p>1) Build and install SoapySDR - <a href="https://github.com/pothosware/SoapySDR" target="_blank">pothosware/SoapySDR</a></p><p></p><p>Some dependencies are required for this -</p><p>[CODE]sudo apt install cmake g++ libpython-dev python-numpy swig[/CODE]</p><p></p><p>2) Build and install the SoapySDR HackRF modules - <a href="https://github.com/pothosware/SoapyHackRF" target="_blank">pothosware/SoapyHackRF</a></p><p></p><p>For this you need to have the HackRF drivers -</p><p>[CODE]sudo apt install hackrf libhackrf-dev[/CODE]</p><p></p><p>It took a reboot at this stage for SoapySDR to see the HackRF, but after that it picked it up fine.</p><p></p><p>3) Build and install the OpenDigitalRadio DAB modulation software (ODR-DabMod) - <a href="https://github.com/Opendigitalradio/ODR-DabMod" target="_blank">Opendigitalradio/ODR-DabMod</a></p><p></p><p>This had some dependencies too, namely ZeroMQ and FFTW -</p><p>[CODE]sudo apt install libzmq3-dev fftw3-dev[/CODE]</p><p></p><p>I disabled UHD output in the config before building as that would have required building more software that I didn't need - I only needed ODR-DabMod to interface with the HackRF via SoapySDR.</p><p>[CODE]./configure --disable-output-uhd[/CODE]</p><p></p><p>4) Build and install ETI Tools, to demux the encapsulated DAB streams from satellite - <a href="https://github.com/piratfm/eti-tools" target="_blank">piratfm/eti-tools</a></p><p></p><p>5) Build and install TSNIV2NI - <a href="https://github.com/newspaperman/tsniv2ni" target="_blank">newspaperman/tsniv2ni</a> - This is another satellite DAB demuxer, it decodes satellite DAB that uses a slightly different format to the ones supported by ETI tools, as explained in the ETI Tools README.</p><p></p><p>At this point we're ready to modulate a DAB signal from satellite, using ETI Tools/tsniv2ni to get the DAB ensemble in ETI format, and ODR-DabMod to modulate it and transmit it via the HackRF.</p><p></p><p>6) We need a DAB.ini config file to give ODR-DabMod the configuration of what to transmit (e.g. what DAB frequency, and how much RF amplification to use) and where the input data is coming from.</p><p></p><p>There's an example.ini file in the doc part of the GIT repository, which I used to create my own, removing the bits I wasn't interested in at this stage. I selected 6C as the channel, purely at random as one that doesn't have anything else on it here. I set the RF power level as pretty low (10) as it's cabled into the receiver so it doesn't need to be very strong. For the input data, I was going to use ZeroMQ, but it turns out that you can just pipe in ETI data directly by setting the input to FIFO. eti_tools/tsniv2ni happily write ETI to STDOUT which makes it nice and simple to link them up.</p><p></p><p>I left some of the defaults from the sample file.</p><p></p><p>[CODE]</p><p>[input]</p><p>transport=file</p><p>source=/dev/stdin</p><p>loop=0</p><p></p><p>[modulator]</p><p>gainmode=var</p><p>digital_gain=0.8</p><p>rate=2048000</p><p></p><p>[cfr]</p><p>enable=0</p><p>clip=50.0</p><p>error_clip=0.1</p><p></p><p>[firfilter]</p><p>enabled=1</p><p></p><p>[poly]</p><p>enabled=0</p><p></p><p>[output]</p><p>output=soapysdr</p><p></p><p>[soapyoutput]</p><p>device=</p><p>master_clock_rate=32768000</p><p>txgain=10</p><p>channel=6C</p><p>[/CODE]</p><p></p><p>7) Finally, I made a shell script to run to pull in a DAB multiplex and transmit it using that config. I use TVHeadend with my PC satellite card, but you can equally stream a transponder carrying a DAB multiplex PID from an Enigma2 box.</p><p></p><p>An example for the RAI DAB+ multiplex on 5W, the config and tools needed for this are on the eti_tools README documentation.</p><p></p><p>I use CURL to stream the filtered PID 1000 carrying the DAB data from the transponder (11013V MIS), then the eti_tools tool <strong>ts2na </strong>to demux the DAB data from the MPEG-TS packets (with an offset of 0, as shown in the README for this DAB multiplex), then the eti_tools tool <strong>na2ni </strong>to output as ETI-NI, which is the correct input format for ODR-DabMod. This then just gets piped into <strong>odr-dabmod </strong>which reads the config file, and transmits the multiplex on DAB channel 6C.</p><p></p><p>[CODE]curl -s http://192.168.0.224:9981/stream/mux/f1daa0412bd28c9e108d3fc804ecd2d4?pids=1000 | ts2na -p 1000 -s 0 | na2ni | odr-dabmod dab.ini[/CODE]</p><p></p><p>For the commercial Italians on 12690V on 5W, this is even more straightforward, as <strong>ts2na </strong>and <strong>na2ni </strong>can be replaced with just <strong>tsniv2ni </strong>and the PID, as this converts them straight to the correct ETI-NI format.</p><p></p><p>[CODE]curl -s http://192.168.0.224:9981/stream/mux/446ab798d96cc90b4f2f1976e7f3e050?pids=4105 | tsniv2ni 4105 | odr-dabmod dab.ini[/CODE]</p><p></p><p>Provided everything is working, if you attach a cable from the HackRF to a DAB tuner at this point, you should be able to tune in the DAB+ ensemble on 6C.</p></blockquote><p></p>
[QUOTE="Adam792, post: 1090184, member: 330868"] To set up the DAB transmission on the Pi with a HackRF One, I did the following - 1) Build and install SoapySDR - [URL='https://github.com/pothosware/SoapySDR']pothosware/SoapySDR[/URL] Some dependencies are required for this - [CODE]sudo apt install cmake g++ libpython-dev python-numpy swig[/CODE] 2) Build and install the SoapySDR HackRF modules - [URL='https://github.com/pothosware/SoapyHackRF']pothosware/SoapyHackRF[/URL] For this you need to have the HackRF drivers - [CODE]sudo apt install hackrf libhackrf-dev[/CODE] It took a reboot at this stage for SoapySDR to see the HackRF, but after that it picked it up fine. 3) Build and install the OpenDigitalRadio DAB modulation software (ODR-DabMod) - [URL='https://github.com/Opendigitalradio/ODR-DabMod']Opendigitalradio/ODR-DabMod[/URL] This had some dependencies too, namely ZeroMQ and FFTW - [CODE]sudo apt install libzmq3-dev fftw3-dev[/CODE] I disabled UHD output in the config before building as that would have required building more software that I didn't need - I only needed ODR-DabMod to interface with the HackRF via SoapySDR. [CODE]./configure --disable-output-uhd[/CODE] 4) Build and install ETI Tools, to demux the encapsulated DAB streams from satellite - [URL='https://github.com/piratfm/eti-tools']piratfm/eti-tools[/URL] 5) Build and install TSNIV2NI - [URL='https://github.com/newspaperman/tsniv2ni']newspaperman/tsniv2ni[/URL] - This is another satellite DAB demuxer, it decodes satellite DAB that uses a slightly different format to the ones supported by ETI tools, as explained in the ETI Tools README. At this point we're ready to modulate a DAB signal from satellite, using ETI Tools/tsniv2ni to get the DAB ensemble in ETI format, and ODR-DabMod to modulate it and transmit it via the HackRF. 6) We need a DAB.ini config file to give ODR-DabMod the configuration of what to transmit (e.g. what DAB frequency, and how much RF amplification to use) and where the input data is coming from. There's an example.ini file in the doc part of the GIT repository, which I used to create my own, removing the bits I wasn't interested in at this stage. I selected 6C as the channel, purely at random as one that doesn't have anything else on it here. I set the RF power level as pretty low (10) as it's cabled into the receiver so it doesn't need to be very strong. For the input data, I was going to use ZeroMQ, but it turns out that you can just pipe in ETI data directly by setting the input to FIFO. eti_tools/tsniv2ni happily write ETI to STDOUT which makes it nice and simple to link them up. I left some of the defaults from the sample file. [CODE] [input] transport=file source=/dev/stdin loop=0 [modulator] gainmode=var digital_gain=0.8 rate=2048000 [cfr] enable=0 clip=50.0 error_clip=0.1 [firfilter] enabled=1 [poly] enabled=0 [output] output=soapysdr [soapyoutput] device= master_clock_rate=32768000 txgain=10 channel=6C [/CODE] 7) Finally, I made a shell script to run to pull in a DAB multiplex and transmit it using that config. I use TVHeadend with my PC satellite card, but you can equally stream a transponder carrying a DAB multiplex PID from an Enigma2 box. An example for the RAI DAB+ multiplex on 5W, the config and tools needed for this are on the eti_tools README documentation. I use CURL to stream the filtered PID 1000 carrying the DAB data from the transponder (11013V MIS), then the eti_tools tool [B]ts2na [/B]to demux the DAB data from the MPEG-TS packets (with an offset of 0, as shown in the README for this DAB multiplex), then the eti_tools tool [B]na2ni [/B]to output as ETI-NI, which is the correct input format for ODR-DabMod. This then just gets piped into [B]odr-dabmod [/B]which reads the config file, and transmits the multiplex on DAB channel 6C. [CODE]curl -s http://192.168.0.224:9981/stream/mux/f1daa0412bd28c9e108d3fc804ecd2d4?pids=1000 | ts2na -p 1000 -s 0 | na2ni | odr-dabmod dab.ini[/CODE] For the commercial Italians on 12690V on 5W, this is even more straightforward, as [B]ts2na [/B]and [B]na2ni [/B]can be replaced with just [B]tsniv2ni [/B]and the PID, as this converts them straight to the correct ETI-NI format. [CODE]curl -s http://192.168.0.224:9981/stream/mux/446ab798d96cc90b4f2f1976e7f3e050?pids=4105 | tsniv2ni 4105 | odr-dabmod dab.ini[/CODE] Provided everything is working, if you attach a cable from the HackRF to a DAB tuner at this point, you should be able to tune in the DAB+ ensemble on 6C. [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
Miscellaneous Sections
Tech Head - The Technology Section
SDR radio, Software Defined Radio
Modulating DAB+ from Satellite with HackRF One
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Accept
Learn more…
Top