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
Joker TV with Raspberry Pi 3

Joker TV with Raspberry Pi 3

Hello All, this post describes Joker TV connection with Raspberry Pi 3. Joker TV connected to Raspberry Pi 3 using USB cable. UHF/VHF and Satellite antennas also connected to Joker TV. First of all, I have prepared a micro-SD card with the Raspberry Pi image on it: sudo dd if=~/Downloads/2017-11-29-raspbian-stretch-lite.img of=/dev/sdg bs=4M where /dev/sdg is my micro-SD card. I have downloaded latest Raspbian image here. After that I connected Joker TV to Raspberry Pi using USB cable and booted up using the prepared micro-SD card. Joker TV doesn't require special Linux kernel drivers, so we could simply build regular user-level applications using this instruction or download a pre-compiled binary here. After building, we are ready to tune Joker TV to terrestrial or satellite TV channels. Joker TV supports a wide range of DTV standards: DVB-S/S2 – satellite, is found everywhere in the world DVB-T/T2 – mostly Europe DVB-C/C2 – cable, is found everywhere in the world ISDB-T – Brazil, Latin America, Japan ATSC – USA, Canada, Mexico, South Korea DTMB – China,...
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
First look at Movidius Neural Compute Stick

First look at Movidius Neural Compute Stick

Today I have received neural network inference hardware accelerator Movidius Neural Compute Stick (USB stick). Movidius is now part of Intel (acquired by Intel in 2016).   Movidius Neural Compute Stick Performance testing SDK installation is smooth under Ubuntu 16.04. The SDK also contains script to fetch caffe-models from the internet. The following models are available by default: Age, AlexNet, Gender, GoogLeNet, SqueezeNet.  I have compiled examples written in C (located in ncapi/c_examples/ folder) and did some checks. All interactions with hardware are made at user-level using libusb (looks like libmvnc.so built on top of libusb) and doesn’t require any kernel-level drivers. C examples allows us to do “image classification”. Now, let’s do some tests. Here is a gender detection process: time ./c_examples/ncs-fullcheck -c100 ./networks/Gender/ ~/mona-lisa.jpg OpenDevice 2 succeeded Graph allocated Female (99.51%) Male (0.48%) Inference time: 237.392059 ms, total time 241.811815 ms ... Inference time: 234.574295 ms, total time 238.665898 ms Deallocate graph, rc=0 Device closed, rc=0 real 0m26.086s user 0m1.051s sys 0m0.071s As we can see Mona Lisa’s gender is accurately detected (99.51% Female). The detection...
Read More
Joker TV, manufacturing

Joker TV, manufacturing

Hello All, This post dedicated to Joker TV manufacturing process. Technical and financial aspects will be covered. For Joker TV hardware description please check this post. Spoiler: cost of one "Joker TV stand-alone" can be as low as $58.52 (if we order 1000 pcs.). For more information please check calculations below. Cost of manufacturing I have asked several Chinese factories to prepare quotation for first Joker TV batch. Say, 100 pcs and 1000 pcs. Following factories sent quotations: Here is the table with received quotations (all costs in USD): Final product Here is a photo of final product. For stand-alone version extruded aluminum enclosure used.   How "Joker TV stand-alone" actually looks like BOM cost (per 1 pcs), USD A bill of materials (BOM) is the raw cost of electronics components required to assembly 1 pcs of Joker TV module. Totally 87 items used. This table contain BOM quotation (Creat Electronic Group Co. quote used as example): PCB (per 1 pcs), USD The cost of bare printed circuit board (PCB). More info about...
Read More
Joker TV, Linux/OSx/Windows drivers and apps

Joker TV, Linux/OSx/Windows drivers and apps

Hello All, Compile driver and apps from sources If you are looking for an already compiled (binary) drivers and apps please use this link. If you are looking for compilation manual for Windows please use this link. If you are looking for compilation manual for Mac(OSx) please use this link. Compilation steps for Linux Install dependencies first (example for Ubuntu/Debian Linux) sudo apt install git cmake build-essential automake autoconf libtool pkg-config libudev-dev libxml2-dev then compile drivers and apps: git clone https://github.com/aospan/libjokertv cd libjokertv mkdir build cd build cmake ../ make Software description Actually there is no special kernel-level driver - I'm using libusb-1.0 library to access USB device. So, to use "Joker TV" you don't need to install drivers, just run application. This helps users to eliminate the driver installation steps and reduce complexity of their "Joker TV" usage. The Tuner and Demodulators part is copied from Linux kernel media source code. A separate folder linux contains this code. Actually this code does not require any special changes to compile in a user-level environment. Potentially we can be faced...
Read More
12