€•ã?Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/input/devices/walkera0701”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/input/devices/walkera0701”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/input/devices/walkera0701”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/input/devices/walkera0701”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/input/devices/walkera0701”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/input/devices/walkera0701”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒWalkera WK-0701 transmitter”h]”hŒWalkera WK-0701 transmitter”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒG/var/lib/git/docbuild/linux/Documentation/input/devices/walkera0701.rst”h KubhŒ paragraph”“”)”}”(hŒ¬Walkera WK-0701 transmitter is supplied with a ready to fly Walkera helicopters such as HM36, HM37, HM60. The walkera0701 module enables to use this transmitter as joystick”h]”hŒ¬Walkera WK-0701 transmitter is supplied with a ready to fly Walkera helicopters such as HM36, HM37, HM60. The walkera0701 module enables to use this transmitter as joystick”…””}”(hh¹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¸)”}”(hŒCDevel homepage and download: http://zub.fei.tuke.sk/walkera-wk0701/”h]”(hŒDevel homepage and download: ”…””}”(hhÇhžhhŸNh NubhŒ reference”“”)”}”(hŒ&http://zub.fei.tuke.sk/walkera-wk0701/”h]”hŒ&http://zub.fei.tuke.sk/walkera-wk0701/”…””}”(hhÑhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”hÓuh1hÏhhÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hh£hžhubh¸)”}”(hŒGor use cogito: cg-clone http://zub.fei.tuke.sk/GIT/walkera0701-joystick”h]”(hŒor use cogito: cg-clone ”…””}”(hhæhžhhŸNh NubhÐ)”}”(hŒ/http://zub.fei.tuke.sk/GIT/walkera0701-joystick”h]”hŒ/http://zub.fei.tuke.sk/GIT/walkera0701-joystick”…””}”(hhîhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”hðuh1hÏhhæubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hh£hžhubh¢)”}”(hhh]”(h§)”}”(hŒConnecting to PC”h]”hŒConnecting to PC”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h Kubh¸)”}”(hXAt back side of transmitter S-video connector can be found. Modulation pulses from processor to HF part can be found at pin 2 of this connector, pin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get modulation pulses to PC, signal pulses must be amplified.”h]”hXAt back side of transmitter S-video connector can be found. Modulation pulses from processor to HF part can be found at pin 2 of this connector, pin 3 is GND. Between pin 3 and CPU 5k6 resistor can be found. To get modulation pulses to PC, signal pulses must be amplified.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjhžhubh¸)”}”(hŒCable: (walkera TX to parport)”h]”hŒCable: (walkera TX to parport)”…””}”(hj"hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjhžhubh¸)”}”(hŒ&Walkera WK-0701 TX S-VIDEO connector::”h]”hŒ%Walkera WK-0701 TX S-VIDEO connector:”…””}”(hj0hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjhžhubhŒ literal_block”“”)”}”(hX-(back side of TX) __ __ S-video: canon25 / |_| \ pin 2 (signal) NPN parport / O 4 3 O \ pin 3 (GND) LED ________________ 10 ACK ( O 2 1 O ) | C \ ___ / 2 ________________________|\|_____|/ | [___] | |/| B |\ ------- 3 __________________________________|________________ 25 GND E”h]”hX-(back side of TX) __ __ S-video: canon25 / |_| \ pin 2 (signal) NPN parport / O 4 3 O \ pin 3 (GND) LED ________________ 10 ACK ( O 2 1 O ) | C \ ___ / 2 ________________________|\|_____|/ | [___] | |/| B |\ ------- 3 __________________________________|________________ 25 GND E”…””}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j>hŸh¶h Khjhžhubh¸)”}”(hŒ)I use green LED and BC109 NPN transistor.”h]”hŒ)I use green LED and BC109 NPN transistor.”…””}”(hjPhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K&hjhžhubeh}”(h]”Œconnecting-to-pc”ah ]”h"]”Œconnecting to pc”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒSoftware”h]”hŒSoftware”…””}”(hjihžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjfhžhhŸh¶h K)ubh¸)”}”(hXšBuild kernel with walkera0701 module. Module walkera0701 need exclusive access to parport, modules like lp must be unloaded before loading walkera0701 module, check dmesg for error messages. Connect TX to PC by cable and run jstest /dev/input/js0 to see values from TX. If no value can be changed by TX "joystick", check output from /proc/interrupts. Value for (usually irq7) parport must increase if TX is on.”h]”hXžBuild kernel with walkera0701 module. Module walkera0701 need exclusive access to parport, modules like lp must be unloaded before loading walkera0701 module, check dmesg for error messages. Connect TX to PC by cable and run jstest /dev/input/js0 to see values from TX. If no value can be changed by TX “joystickâ€, check output from /proc/interrupts. Value for (usually irq7) parport must increase if TX is on.”…””}”(hjwhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K+hjfhžhubeh}”(h]”Œsoftware”ah ]”h"]”Œsoftware”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K)ubh¢)”}”(hhh]”(h§)”}”(hŒTechnical details”h]”hŒTechnical details”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h K5ubh¸)”}”(hŒWDriver use interrupt from parport ACK input bit to measure pulse length using hrtimers.”h]”hŒWDriver use interrupt from parport ACK input bit to measure pulse length using hrtimers.”…””}”(hjžhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K7hjhžhubh¸)”}”(hŒŸFrame format: Based on walkera WK-0701 PCM Format description by Shaul Eizikovich. (downloaded from http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf)”h]”(hŒdFrame format: Based on walkera WK-0701 PCM Format description by Shaul Eizikovich. (downloaded from ”…””}”(hj¬hžhhŸNh NubhÐ)”}”(hŒ:http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf”h]”hŒ:http://www.smartpropoplus.com/Docs/Walkera_Wk-0701_PCM.pdf”…””}”(hj´hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j¶uh1hÏhj¬ubhŒ)”…””}”(hj¬hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K:hjhžhubh¢)”}”(hhh]”(h§)”}”(hŒ Signal pulses”h]”hŒ Signal pulses”…””}”(hjÐhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjÍhžhhŸh¶h K?ubj?)”}”(hŒŠ (ANALOG) SYNC BIN OCT +---------+ +------+ | | | | --+ +------+ +---”h]”hŒŠ (ANALOG) SYNC BIN OCT +---------+ +------+ | | | | --+ +------+ +---”…””}”hjÞsbah}”(h]”h ]”h"]”h$]”h&]”jNjOuh1j>hŸh¶h KChjÍhžhubeh}”(h]”Œ signal-pulses”ah ]”h"]”Œ signal pulses”ah$]”h&]”uh1h¡hjhžhhŸh¶h K?ubh¢)”}”(hhh]”(h§)”}”(hŒFrame”h]”hŒFrame”…””}”(hj÷hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjôhžhhŸh¶h KJubj?)”}”(hŒISYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC ..”h]”hŒISYNC , BIN1, OCT1, BIN2, OCT2 ... BIN24, OCT24, BIN25, next frame SYNC ..”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”jNjOuh1j>hŸh¶h KNhjôhžhubeh}”(h]”Œframe”ah ]”h"]”Œframe”ah$]”h&]”uh1h¡hjhžhhŸh¶h KJubh¢)”}”(hhh]”(h§)”}”(hŒ pulse length”h]”hŒ pulse length”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjhžhhŸh¶h KQubj?)”}”(hX« Binary values: Analog octal values: 288 uS Binary 0 318 uS 000 438 uS Binary 1 398 uS 001 478 uS 010 558 uS 011 638 uS 100 1306 uS SYNC 718 uS 101 798 uS 110 878 uS 111”h]”hX« Binary values: Analog octal values: 288 uS Binary 0 318 uS 000 438 uS Binary 1 398 uS 001 478 uS 010 558 uS 011 638 uS 100 1306 uS SYNC 718 uS 101 798 uS 110 878 uS 111”…””}”hj,sbah}”(h]”h ]”h"]”h$]”h&]”jNjOuh1j>hŸh¶h KUhjhžhubh¸)”}”(hŒ824 bin+oct values + 1 bin value = 24*4+1 bits = 97 bits”h]”hŒ824 bin+oct values + 1 bin value = 24*4+1 bits = 97 bits”…””}”(hj:hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K`hjhžhubh¸)”}”(hŒy(Warning, pulses on ACK are inverted by transistor, irq is raised up on sync to bin change or octal value to bin change).”h]”hŒy(Warning, pulses on ACK are inverted by transistor, irq is raised up on sync to bin change or octal value to bin change).”…””}”(hjHhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kbhjhžhubeh}”(h]”Œ pulse-length”ah ]”h"]”Œ pulse length”ah$]”h&]”uh1h¡hjhžhhŸh¶h KQubh¢)”}”(hhh]”(h§)”}”(hŒBinary data representations”h]”hŒBinary data representations”…””}”(hjahžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj^hžhhŸh¶h Kfubh¸)”}”(hŒwOne binary and octal value can be grouped to nibble. 24 nibbles + one binary values can be sampled between sync pulses.”h]”hŒwOne binary and octal value can be grouped to nibble. 24 nibbles + one binary values can be sampled between sync pulses.”…””}”(hjohžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khhj^hžhubh¸)”}”(hŒìValues for first four channels (analog joystick values) can be found in first 10 nibbles. Analog value is represented by one sign bit and 9 bit absolute binary value. (10 bits per channel). Next nibble is checksum for first ten nibbles.”h]”hŒìValues for first four channels (analog joystick values) can be found in first 10 nibbles. Analog value is represented by one sign bit and 9 bit absolute binary value. (10 bits per channel). Next nibble is checksum for first ten nibbles.”…””}”(hj}hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kkhj^hžhubh¸)”}”(hŒþNext nibbles 12 .. 21 represents four channels (not all channels can be directly controlled from TX). Binary representations are the same as in first four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is checksum for nibbles 12..23.”h]”hŒþNext nibbles 12 .. 21 represents four channels (not all channels can be directly controlled from TX). Binary representations are the same as in first four channels. In nibbles 22 and 23 is a special magic number. Nibble 24 is checksum for nibbles 12..23.”…””}”(hj‹hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kphj^hžhubh¸)”}”(hŒíAfter last octal value for nibble 24 and next sync pulse one additional binary value can be sampled. This bit and magic number is not used in software driver. Some details about this magic numbers can be found in Walkera_Wk-0701_PCM.pdf.”h]”hŒíAfter last octal value for nibble 24 and next sync pulse one additional binary value can be sampled. This bit and magic number is not used in software driver. Some details about this magic numbers can be found in Walkera_Wk-0701_PCM.pdf.”…””}”(hj™hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Kuhj^hžhubeh}”(h]”Œbinary-data-representations”ah ]”h"]”Œbinary data representations”ah$]”h&]”uh1h¡hjhžhhŸh¶h Kfubh¢)”}”(hhh]”(h§)”}”(hŒChecksum calculation”h]”hŒChecksum calculation”…””}”(hj²hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj¯hžhhŸh¶h K{ubh¸)”}”(hX Summary of octal values in nibbles must be same as octal value in checksum nibble (only first 3 bits are used). Binary value for checksum nibble is calculated by sum of binary values in checked nibbles + sum of octal values in checked nibbles divided by 8. Only bit 0 of this sum is used.”h]”hX Summary of octal values in nibbles must be same as octal value in checksum nibble (only first 3 bits are used). Binary value for checksum nibble is calculated by sum of binary values in checked nibbles + sum of octal values in checked nibbles divided by 8. Only bit 0 of this sum is used.”…””}”(hjÀhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K}hj¯hžhubeh}”(h]”Œchecksum-calculation”ah ]”h"]”Œchecksum calculation”ah$]”h&]”uh1h¡hjhžhhŸh¶h K{ubeh}”(h]”Œtechnical-details”ah ]”h"]”Œtechnical details”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K5ubeh}”(h]”Œwalkera-wk-0701-transmitter”ah ]”h"]”Œwalkera wk-0701 transmitter”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jãjàjcj`jŠj‡jÛjØjñjîjjj[jXj¬j©jÓjÐuŒ nametypes”}”(jã‰jc‰jЉjÛ‰jñ‰j‰j[‰j¬‰jÓ‰uh}”(jàh£j`jj‡jfjØjjîjÍjjôjXjj©j^jÐj¯uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.