DTMB TS dumps (China)

Following TS dumps created on January 2018 in Changsha, Hunan Province, China. DTMB dump (722MHz) sands-722mhz.ts (50MB) This stream plays without problems by ffplay, vlc, etc. DTMB dump (754MHz) sands-754mhz.ts (50MB) artifacts if we try to play: ffplay sands-754mhz.ts cavs video codec reported:     Stream #0:13[0x17d]: Video: cavs (B[0][0][0] / 0x0042), yuv420p, 720x576, 25 fps, 25 tbr, 90k tbn, 25 tbc   DTMB dump (522MHz) sands-522mhz.ts (50 MB) stream is scrambled: PID: 6201 (0x1839)  [= ] transport_scrambling_control: 2 (0x02)  [= TS packet scrambled with Even Key] adaptation_field_control: 1 (0x01)  [= no adaptation_field, payload only] continuity_counter: 11 (0x0b)  [= (sequence ok)]  Following CA system id's reported in  PMT:                CA_system_ID: 26882 (0x6902)                  CA_system_ID: 19193 (0x4af9)                  CA_system_ID: 19238 (0x4b26)...
Read More
Common Interface (CI) for descrambling TV channels

Common Interface (CI) for descrambling TV channels

Hello everybody! This post describes how Common Interface (CI) works on Joker TV device. Common Interface (CI) is required for descrambling (decrypt) TV channels. Usually operators do the encryption for paid TV content (not free content), and end users have to buy Conditional Access Module (CAM) and smart cards for decryption. Smart card should be inserted into CAM, then the CAM should be inserted into a Common Interface (CI) slot on Joker TV device. Here is a photo below: Joker TV with inserted CAM module and smart card Note: Joker TV firmware revision 0x37 or newer and libjokertv version 1.10.2 or newer is recommended to work with Common Interface (CI). Common Interface (CI) and CAM usage Joker TV does the Common Interface (CI) and CAM initialization. If it is successful then a green LED near the CI should come on. Then we should use joker-tv console app for RF tuning and configuring CI and CAM. For testing purposes I will use following command: joker-tv -d...
Read More
Transport Stream dataflow

Transport Stream dataflow

Hello everybody! This post describes how Transport Stream dataflow within the Joker TV universal USB DTV receiver. All described functionalities are written on Verilog and run on Altera FPGA (EP4CE22F17C8N). The firmware is fully open source and can be found here. I have also prepared the following diagram for a better understanding:   As you can see, we have quite a few Transport Stream (TS) sources: DVB-S2/T2/C2/ISDB-T demodulator (Sony CXD2854ER) ATSC demodulator (LG LGDT3306A) DTMB demodulator (AltoBeam ATBM8881) Transport Stream generator - produces Transport Stream packets and fill them with a predefined pattern. This pattern can be used on the host’s side for data correctness control; written on Verilog. USB EP4 - receive Transport Stream from host using USB bulk transfers. Can be used to pass data through Joker TV, for example for descrambling with CAM. One of this source can be selected for further processing. This Transport Stream contains all packets without any filtration (Full TS). However for some reason, we need to exclude (strip) some Transport...
Read More
DVB-S/S2 blind scan with Joker TV

DVB-S/S2 blind scan with Joker TV

Hello everybody! This post describes satellite transponders (DVB-S/S2) blind scan with Joker TV’s universal USB DTV receiver.  Firstly, I will show you the blind scan results and other cool stuff that you can get. Below are the technical details. DVB-S/S2 blind scan with Joker TV Blind scan is a useful feature for when you want to get all available transponders broadcasted from a satellite. This method will give you the full actual information compared to the list of transponders available on the internet. Here is a blind scan result for Ku-band of HotBird 13E satellite obtained in Belgium by Alexander Deryugin As you can see, Joker TV has found all peaks on spectrum and detected their standard, modulation, symbol rate, FEC, pilot. Spectrums were obtained for four quadrants that cover all available bands: * LNB power 13V, 22kHz tone off. This gives us vertical/right polarization and lower band of LNB (9750MHz local oscillator was used). * LNB power 13V, 22kHz tone on. This gives us...
Read More
High bandwidth USB Isochronous transfers

High bandwidth USB Isochronous transfers

Hello everybody, this post describes data transfer over USB from Joker TV to a host using high bandwidth USB isochronous transfers which has bitrate 3 times higher than regular USB isochronous transfers. High bandwidth USB isochronous transfers Regular isochronous USB transfer contains only one data packet (DATA_0) per microframe (125 usec) and can achieve 62.5 Mbit/sec of data throughput. In the same time high bandwidth isochronous USB transfer contains three data packets (DATA_2, DATA_1 and DATA_0) per microframe (125 usec) and can achieve 187.5 Mbit/sec of data throughput. Joker TV FPGA firmware implemented high bandwidth USB isochronous transfers starting from revision 0x2d. The source can be found on github. Now EP3 IN endpoint respond to DATA_IN token with DATA_2, DATA_1 or DATA_0 packets. The packet to be sent is defined in "Table B-2" of xHCI specification. The rule is simple - DATA_2 and DATA_1 should be filled to the maximum size (1024 bytes) and DATA_0 can be any size below the maximum. Sniffing USB traffic on...
Read More

Building Joker TV drivers and apps for Mac (OSx)

Hello All, Compile driver and apps under Mac (OSx) If you are looking for an already compiled (binary) drivers and apps please use this link. If you are looking for compilation manual for Linux please use this link. If you are looking for compilation manual for Windows please use this link. Preparing build environment (brew) Install brew using following command /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" Install required packages brew install cmake autoconf automake libtool Joker TV drivers and apps compilation Now we have prepared brew build environment and can build Joker TV drivers and apps git clone https://github.com/aospan/libjokertv cd libjokertv mkdir build cd build cmake ../ make make package After completion you can find resulting package 'joker_tv-1.2.0-Darwin.tar.gz'.  ...
Read More

Building Joker TV drivers and apps for Windows

Hello All, Compile driver and apps under Windows OS If you are looking for an already compiled (binary) drivers and apps please use this link. If you are looking for compilation manual for Linux please use this link. If you are looking for compilation manual for Mac(OSx) please use this link. Preparing build environment (MSYS2) Install MSYS2 from http://www.msys2.org/ first. You can choose 32 or 64 bit version. I will use 64-bit version only in this post for simplicity but you can use 32-bit version as well (just change all "32" to "64" and "x86_64" to "i686"). MSYS2 installs into 'C:\msys64\' by default. Please start msys2 shell 'C:\msys64\mingw64.exe'. Now we should install required software using package manager named 'pacman'. Please run following commands: pacman -Sy pacman -S git make automake autoconf libtool mingw64/mingw-w64-x86_64-cmake mingw64/mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-nsis libxml2-devel Joker TV drivers and apps compilation Now we have prepared MSYS2 build environment and can build Joker TV drivers and apps. Please start msys2 shell 'C:\msys64\mingw64.exe' and run following commands: git clone https://github.com/aospan/libjokertv cd libjokertv mkdir build cd build cmake -G"MSYS Makefiles" ../ make make package After completion you...
Read More
Speech recognition and Speech synthesis using neural networks

Speech recognition and Speech synthesis using neural networks

Hello All, Today I want to show you how Joker can be used for speech recognition and speech synthesis using neural networks and Joker Empathy module. I have brewed two docker containers for super simple usage. Just one command required to run neural network and obtain the results. This tutorial should work on any Linux and OSx . No GPU required, only CPU. This funny video shows voice interaction with Joker: https://youtu.be/mnw7q0VXYTs Speech recognition (speech-to-text) This service based on Kaldi ASR project. Kaldi's 'chain' models (type of DNN-HMM model) used. Actual trained model released by api.ai team. Model contains 127847 words. Compare this number with Oxford English Dictionary which contains 171,476 words or average English-speaking adult knows between 20,000 and 30,000 words. And need to say that this model shows 11.2% word error rate (WER). This is very good results ! "Old" speech recognition methods (GMM-HMM) can show only 21+% WER. To run test just issue following command in console: docker run -it aospan/stt builtin file will be processed and output should contain...
Read More
Neural network scene understanding on Joker

Neural network scene understanding on Joker

Hello All, Today I want to show you how Joker with SegNet project can be used for scene understanding (in AI world it's called "semantic segmentation"). We will take picture of our room and AI will show us pixels belongs for different objects (like "table", "chair", etc). This tutorial should work on any Linux distribution (CoreOS, Debian, RedHat, etc). No GPU required, only CPU. I have brewed ready to use docker image, just issue following command in console: docker run --name segnet --rm -it -v `pwd`/out:/workspace/out aospan/docker-segnet you should see following output if input images processed successfully: Grabbed camera frame in 12.1850967407 ms Resized image in 33.4980487823 ms Executed SegNet in 11251.4910698 ms Processed results in 2.71892547607 ms Input and processed images located in folder ./out. Let's take a look at this images: Left image is input and right is output annotated image. AI defined what object this pixel related for and mark with different colors. Now you can prepare your own images and make experiments with AI semantic segmentation. Input images should be named strictly as...
Read More
12