DAB/DAB+
Contents
DAB/DAB+
The DAB/DAB+ USB Stick decodes DAB/DAB+ onchip and transfers the decoded audio data fully digital to the host system. Currently Linux and MacOS are supported.
Installation Linux
open a terminal and enter following commands:
sudo -s wget http://sundtek.de/media/sundtek_netinst.sh chmod 777 sundtek_netinst.sh ./sundtek_netinst.sh
In case you want to distribute the local stations digitally you can also install our streaming server (again on the commandline)
just run following commands: sudo -s /opt/bin/mediaclient --installstreamer
Installation MacOSX
MacOSX: - https://www.sundtek.de/media/sundtek_driver_macosx_190727.1744.dmg - https://www.sundtek.de/media/dablet_v0.1.dmg
First install the driver, afterwards dablet_v0.1.dmg
Installation Raspberry PI
In case you don't want to use our radio application, the installation is the same as on a regular linux system
sudo -s wget http://sundtek.de/media/sundtek_netinst.sh chmod 777 sundtek_netinst.sh ./sundtek_netinst.sh
Radio Application:
cd $HOME sudo apt-get install qt5-default wget http://sundtek.de/media/dablet_raspbian.tar.gz tar xf dablet_raspbian.tar.gz ./dablet
DAB/DAB+ commandline interface
scan for transponders:
/opt/bin/mediaclient --scandabfrequencies /dev/dab0 scanning: 5A / 174928000 scanning: 5B / 176640000 scanning: 5C / 178352000 [LOCKED] scanning: 5D / 180064000 scanning: 6A / 181936000 scanning: 6B / 183648000 scanning: 6C / 185360000 scanning: 6D / 187072000 scanning: 7A / 188928000 scanning: 7B / 190640000 [LOCKED] scanning: 7C / 192352000 scanning: 7D / 194064000 [LOCKED] scanning: 8A / 195936000
tune to a transponder:
/opt/bin/mediaclient -m DAB -f 194064000 Using device: /dev/dab0 Tuning: 194064000 [LOCKED]
turn on direct audio playback in the driver (the driver will try to play back audio via alsa, pulseaudio or oss:
/opt/bin/mediaclient -m DAB -g off
scan a dab transponder:
/opt/bin/mediaclient --scandabservices /dev/dab0 Service Name, Service ID, Component ID BR-Klassik 0xd314 0xb Inforadio 0xd335 0x8 FH Europa 0xd496 0x3 radioeins 0xd332 0x1 radioBERLIN 88 8 0xd321 0x6 kulturradio 0xd323 0x5 Fritz 0xd333 0x7 Antenne 0xd431 0x0 SWR3 0xd3a3 0x4 Bayern 2 0xd412 0xc WDR2 0xd392 0x2 MDR JUMP 0xd3c2 0xd rbb TPEG 0xe0d11019 0xc00a rbb EPG 0xe0d01019 0xc009
Tune to a specific DAB station:
/opt/bin/mediaclient -m DAB -f 194064000 --sid 0xd321 Using device: /dev/dab0 Tuning: 194064000, 0xd321 [LOCKED]
Read signal statistics:
/opt/bin/mediaclient --readsignal=0 -d /dev/dab0 FREQUENCY: 178352000 LOCKED: YES RSSI: 172 SNR: 10 FIC_QUALITY: 100 CNR: 14 FREQUENCY: 178352000 LOCKED: YES RSSI: 173 SNR: 10 FIC_QUALITY: 100 CNR: 13 FREQUENCY: 178352000 LOCKED: YES RSSI: 172 SNR: 10 FIC_QUALITY: 100 CNR: 12 FREQUENCY: 178352000 LOCKED: YES RSSI: 173 SNR: 10 FIC_QUALITY: 100 CNR: 13 FREQUENCY: 178352000 LOCKED: YES RSSI: 173 SNR: 10 FIC_QUALITY: 100 CNR: 13 FREQUENCY: 178352000 LOCKED: YES RSSI: 173 SNR: 9 FIC_QUALITY: 100 CNR: 12 FREQUENCY: 178352000 LOCKED: YES RSSI: 173 SNR: 9 FIC_QUALITY: 100 CNR: 12
C API
scan for DAB/DAB Frequencies
example:
int media_scan_dabfrequencies(char *device, int devfd, int console, int running) { int fd; int rv; int nlen; char tmp[30]; if (devfd>=0) fd = devfd; else fd = net_open(device, O_RDWR); if (fd>=0) { struct dab_frequency dabf; struct dab_tuner dabt; int i; int e; int current_scan_index=-1; struct dab_scan_setup setup; struct dab_scan_parameters parameters; memset(¶meters, 0x0, sizeof(struct dab_scan_parameters)); memset(&setup, 0x0, sizeof(struct dab_scan_setup)); net_ioctl(fd, DAB_SCAN_SETUP, &setup); do { net_ioctl(fd, DAB_SCAN_NEXT_FREQUENCY, ¶meters); if (current_scan_index != parameters.scan_index) { if (console>=0) { sprintf(tmp, "%s %d\n", dab_frequency_list[parameters.scan_index].channel, dab_frequency_list[parameters.scan_index].freq*1000); rv=write(console, tmp, nlen); } else { fprintf(stdout, "%s %d\n", dab_frequency_list[parameters.scan_index].channel, dab_frequency_list[parameters.scan_index].freq*1000); fflush(stdout); } } switch(parameters.status) { case DAB_SCAN_LOCKED: { if (console>=0) { rv=write(console, "[LOCKED]\n", 9); } else { fprintf(stdout, "[LOCKED]\n"); } break; } case DAB_SCAN_SEARCHING: usleep(10000); break; case DAB_SCAN_COMPLETE: { if (console>=0) { rv=write(console, "[FINISHED]\n", 11); } else { fprintf(stdout, "\nScan completed\n"); } break; } } current_scan_index = parameters.scan_index; if (console>=0 && running == 0) break; } while (parameters.status != DAB_SCAN_COMPLETE); if (devfd == -1) net_close(fd); } return 0; }