cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

walkera0701.rst (4100B)


      1===========================
      2Walkera WK-0701 transmitter
      3===========================
      4
      5Walkera WK-0701 transmitter is supplied with a ready to fly Walkera
      6helicopters such as HM36, HM37, HM60. The walkera0701 module enables to use
      7this transmitter as joystick
      8
      9Devel homepage and download:
     10http://zub.fei.tuke.sk/walkera-wk0701/
     11
     12or use cogito:
     13cg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick
     14
     15
     16Connecting to PC
     17================
     18
     19At back side of transmitter S-video connector can be found. Modulation
     20pulses from processor to HF part can be found at pin 2 of this connector,
     21pin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get
     22modulation pulses to PC, signal pulses must be amplified.
     23
     24Cable: (walkera TX to parport)
     25
     26Walkera WK-0701 TX S-VIDEO connector::
     27
     28 (back side of TX)
     29     __   __              S-video:                                  canon25
     30    /  |_|  \             pin 2 (signal)              NPN           parport
     31   / O 4 3 O \            pin 3 (GND)        LED        ________________  10 ACK
     32  ( O 2   1 O )                                         | C
     33   \   ___   /      2 ________________________|\|_____|/
     34    | [___] |                                 |/|   B |\
     35     -------        3 __________________________________|________________ 25 GND
     36                                                          E
     37
     38I use green LED and BC109 NPN transistor.
     39
     40Software
     41========
     42
     43Build kernel with walkera0701 module. Module walkera0701 need exclusive
     44access to parport, modules like lp must be unloaded before loading
     45walkera0701 module, check dmesg for error messages. Connect TX to PC by
     46cable and run jstest /dev/input/js0 to see values from TX. If no value can
     47be changed by TX "joystick", check output from /proc/interrupts. Value for
     48(usually irq7) parport must increase if TX is on.
     49
     50
     51
     52Technical details
     53=================
     54
     55Driver use interrupt from parport ACK input bit to measure pulse length
     56using hrtimers.
     57
     58Frame format:
     59Based on walkera WK-0701 PCM Format description by Shaul Eizikovich.
     60(downloaded from http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf)
     61
     62Signal pulses
     63-------------
     64
     65::
     66
     67                     (ANALOG)
     68      SYNC      BIN   OCT
     69    +---------+      +------+
     70    |         |      |      |
     71  --+         +------+      +---
     72
     73Frame
     74-----
     75
     76::
     77
     78 SYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC ..
     79
     80pulse length
     81------------
     82
     83::
     84
     85   Binary values:		Analog octal values:
     86
     87   288 uS Binary 0		318 uS       000
     88   438 uS Binary 1		398 uS       001
     89				478 uS       010
     90				558 uS       011
     91				638 uS       100
     92  1306 uS SYNC			718 uS       101
     93				798 uS       110
     94				878 uS       111
     95
     9624 bin+oct values + 1 bin value = 24*4+1 bits  = 97 bits
     97
     98(Warning, pulses on ACK are inverted by transistor, irq is raised up on sync
     99to bin change or octal value to bin change).
    100
    101Binary data representations
    102---------------------------
    103
    104One binary and octal value can be grouped to nibble. 24 nibbles + one binary
    105values can be sampled between sync pulses.
    106
    107Values for first four channels (analog joystick values) can be found in
    108first 10 nibbles. Analog value is represented by one sign bit and 9 bit
    109absolute binary value. (10 bits per channel). Next nibble is checksum for
    110first ten nibbles.
    111
    112Next nibbles 12 .. 21 represents four channels (not all channels can be
    113directly controlled from TX). Binary representations are the same as in first
    114four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is
    115checksum for nibbles 12..23.
    116
    117After last octal value for nibble 24 and next sync pulse one additional
    118binary value can be sampled. This bit and magic number is not used in
    119software driver. Some details about this magic numbers can be found in
    120Walkera_Wk-0701_PCM.pdf.
    121
    122Checksum calculation
    123--------------------
    124
    125Summary of octal values in nibbles must be same as octal value in checksum
    126nibble (only first 3 bits are used). Binary value for checksum nibble is
    127calculated by sum of binary values in checked nibbles + sum of octal values
    128in checked nibbles divided by 8. Only bit 0 of this sum is used.