{"id":317,"date":"2015-01-18T17:49:27","date_gmt":"2015-01-18T16:49:27","guid":{"rendered":"http:\/\/om0xa.dxradio.sk\/?p=317"},"modified":"2016-03-04T22:20:22","modified_gmt":"2016-03-04T21:20:22","slug":"icom-ic-7000-memory-programmer","status":"publish","type":"post","link":"https:\/\/om0xa.dxradio.sk\/?p=317","title":{"rendered":"Icom IC-7000 Memory Programmer"},"content":{"rendered":"<h3><\/h3>\n<h3>Preface<\/h3>\n<p>Transceiver Icom IC-7000 offers 5 memory banks, each of 99 memories. It&#8217;s very boring and time-consuming to store all parameters to memories &#8220;by hand&#8221;, so I tried to find some application on the internet, which can make this job instead of me. Several applications are available, but no one satisfied my requirements:<\/p>\n<ul>\n<li><strong>Radio Programming Software for the Icom IC-7000<\/strong><br \/>\nfrom <a href=\"https:\/\/www.rtsystemsinc.com\/Articles.asp?ID=321\">RT systems Inc.<\/a> &#8211; only windows version, not free software.<\/li>\n<li><strong>Icom ProMemEdit<\/strong><br \/>\nfrom <a href=\"http:\/\/www.plicht.de\/ekki\/software\/promemedit.html\">DF4OR<\/a> &#8211; only windows version, development stopped, not supporting new radios like IC-7000.<\/li>\n<li><strong>IcomProgrammer II<\/strong><br \/>\nfrom <a href=\"http:\/\/www.arachnoid.com\/IcomProgrammer\/index.html\">P. Lutus<\/a> &#8211; good software, written in Python, but not exactly what I needed.<\/li>\n<\/ul>\n<p>Because i am using only Linux in my home computer for many years, last software from P. Lutus, written in python, was the right piece of code, which I decided to modify, to meet my requirements. IcomProgrammer II was written under GNU licence, so no problem to modify and use this software. Original code can be downloaded on <a href=\"http:\/\/www.arachnoid.com\/IcomProgrammer\/resources\/icom_programmer.py\">Paul Lutus web page<\/a>. My modified application I call <strong>Icom IC-7000 Memory Programmer<\/strong>.<\/p>\n<p>Main goal was write some application under Linux, that allows read memory data from simple file, and write them via CI-V interface to IC-7000&#8217;s memories. Paul&#8217;s solution was LibreOffice spreadsheed, where I can simply store all needed data for each memory channel and <strong>Icom IC-7000 Memory Programmer<\/strong> can read them. Main disadvantage of Paul&#8217;s Lutus Programmer is no possibility to set memory bank.\u00a0 His software counts the number of frequencies to store and distribute them into memory banks by the number of memory channels in each bank. In my <strong>Icom IC-7000 Memory Programmer<\/strong> is possible to exactly set which memory bank to use to store each of frequencies.Next, I added support of DTCS, filter bandwidth and scan marking of memory channel. I my opinion, Paul uses complicated algorithm of storing data to memory channel, copying manual &#8220;by hand&#8221; process.\u00a0 <strong>Icom IC-7000 Memory Programmer<\/strong> reads all necessary data from .ods\u00a0 file, modify them for CI-V interface, and send them all directly\u00a0 to memory place in TCVR. This CI-V command (0x1A 0x00) is not described in IC-7000 user manual , so I used reverse engineering and google searching to discover, how this command exactly works.<\/p>\n<p>For connecting TCVR with computer can be used original Icom CT-17 usb interface, or some cheap CI-V usb interface for Icom from eBay.<\/p>\n<p>This application can be probably run under python for windows environment.<\/p>\n<p><!--more--><\/p>\n<h3>Data file structure<\/h3>\n<p>Basic structure of LibreOffice file containing frequency data is like that:<\/p>\n<blockquote>\n<table style=\"height: 88px; font-size: 10pt;\" border=\"1\" width=\"703\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<th style=\"text-align: center;\">Bank<\/th>\n<th>MemTag<\/th>\n<th>Mode<\/th>\n<th>RxFreq<\/th>\n<th>TxFreq<\/th>\n<th>TxOffset<\/th>\n<th>TxTone<\/th>\n<th>RxTone<\/th>\n<th>RxDCS<\/th>\n<th>TxDCS<\/th>\n<th>SQType<\/th>\n<th>RxFilter<\/th>\n<th>Scan<\/th>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">A<\/td>\n<td style=\"text-align: center;\">OM0OVR<\/td>\n<td style=\"text-align: center;\">fm<\/td>\n<td style=\"text-align: center;\">145.750<\/td>\n<td style=\"text-align: center;\">145.150<\/td>\n<td style=\"text-align: center;\">-0.6<\/td>\n<td style=\"text-align: center;\">67<\/td>\n<td style=\"text-align: center;\">88.5<\/td>\n<td style=\"text-align: center;\">NN073<\/td>\n<td style=\"text-align: center;\">NN073<\/td>\n<td style=\"text-align: center;\">TSQL<\/td>\n<td style=\"text-align: center;\">1<\/td>\n<td style=\"text-align: center;\">True<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/blockquote>\n<ul>\n<li><strong>Bank<\/strong> &#8211; memmory bank used to store. One of [A,B,C,D,E]<\/li>\n<li><strong>MemTag<\/strong> &#8211; name of the memory channel. Max. 9 characters<\/li>\n<li><strong>Mode<\/strong> &#8211; modulation mode. One of [fm, am, lsb, usb, cw, rtty, wfm]<\/li>\n<li><strong>RxFreq<\/strong> &#8211; receiver frequency in MHz<\/li>\n<li><strong>TxFreq<\/strong> &#8211; transmitter frequency in MHz<\/li>\n<li><strong>TxOffset<\/strong> &#8211; duplex offset. In case of simplex channel, should be blank. This column is not necessary for programming. I use it just for counting TX frequency. So I do not must remember TX frequency. <strong>Icom IC-7000 Memory Programmer<\/strong> doesn&#8217;t use this column<\/li>\n<li><strong>RxTone<\/strong> &#8211; CTCSS tone of receiver<\/li>\n<li><strong>TxTone<\/strong> &#8211; CTCSS tone of transmitter<\/li>\n<li><strong>RxDCS<\/strong> &#8211; DTCS tone of receiver<\/li>\n<li><strong>TxDCS<\/strong> &#8211; DTCS tone oftransmitter<\/li>\n<li><strong>SqType<\/strong> &#8211; type of tone squelch.\u00a0 One of [TONE, TSQL, TDCS] or blank if without tone squelch<\/li>\n<li><strong>RxFilter<\/strong> &#8211; bandwidth of RX filter.\u00a0 One of [1,2,3]. For details, see in user manual of IC-7000.\u00a0 Depends on modulation selected.<\/li>\n<li><strong>Scan<\/strong> &#8211; mark for memory scanning. Value of this should be True, TRUE, Y, y, or true. If left blank, memory channel will not be scanned.<\/li>\n<\/ul>\n<p>Each row in table represents one memory channel in memory of TCVR.<\/p>\n<h3>Downloading and running Icom IC-7000 Memory Programmer<\/h3>\n<p>First <a href=\"http:\/\/www.dxradio.sk\/buffer\/IC7000_MP\/IC-7000_memory_programmer.tar.gz\">downolad<\/a> Icom IC-7000 Memory Programmer, and unpack it to some folder.<\/p>\n<p>Run this command:<\/p>\n<blockquote><p>.\/<em>icom_ic-7000_memory_programmer.py<br \/>\n<\/em><\/p><\/blockquote>\n<p>This file must be set executable, so it can be executed under Python interpreter.\u00a0 It makes its own directory structure needed for specific files.<\/p>\n<h3>Icom IC-7000 Memory Programmer functions<\/h3>\n<p>You can have more different &#8220;configurations&#8221; of your radio.\u00a0 For example one set of frequencies for home use, one for SOTA, one for boat, etc. Each set of frequencies must be in separate .ods file, and be written in source code of <strong>Icom IC-7000 Memory Programmer. <\/strong>Look at the example bellow:<\/p>\n<blockquote><p># User configuration table<br \/>\nself.radio_configurations = {<br \/>\n&#8216;IC-7000-Home&#8217; : (&#8216;IC-7000&#8217;,(&#8216;home_frequencies&#8217;,)),<br \/>\n&#8216;IC-7000-Car&#8217; : (&#8216;IC-7000&#8217;,(&#8216;car_frequencies&#8217;,)),<br \/>\n}<\/p><\/blockquote>\n<p>It means, we have 2 different configuration, one for home use of IC-7000 and one for car usage.\u00a0 Frequencies are in two different files:\u00a0 <em>home_frequencies.ods<\/em> and <em>car_frequencies.ods<\/em>.\u00a0 We can have as many files\/configurations as we want.<\/p>\n<p>Main menu of <strong>Icom IC-7000 Memory Programmer<\/strong> looks like this:<\/p>\n<blockquote><p>Options:<br \/>\n1: Program IC-7000-Home<br \/>\n2: Program IC-7000-car<br \/>\n3: Create All Radio Frequency Lists<br \/>\n4: Create All CSV\/TSV Frequency Lists<br \/>\n5: Erase All Memories<br \/>\n6: Quit<br \/>\nSelect (1 &#8211; 6):<\/p><\/blockquote>\n<p>First are listed options, for programming IC-7000 radio from different files.\u00a0 How many files you have, so many options is in the main menu.\u00a0 Next are two options for exporting your .ods files to different formats: CSV, TSV, PDF, HTML.\u00a0 These functions are the same as in Paul&#8217;s Lutus programmer.\u00a0 New option is <em>Erase All Memories<\/em>, that is not present in Paul&#8217;s programmer. Last one is <em>Quit<\/em>, for exit.<\/p>\n<h3>Conclusion<\/h3>\n<p>My<strong> Icom IC-7000 Memory Programmer<\/strong> is not written perfectly, but is working well for me. If is hepls someone, I will be happy.\u00a0 If someone finds a bug, feel free to correct it. Anybody can improve functionality of application and send me a copy. Please do not contact me for assistance or support. Anybody can study the source code and make changes, that meets his requirements.<\/p>\n<p>For more help it&#8217;s seriously recommended to read Paul&#8217;s Lutus webpage mentioned above.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Icom IC-7000 Memory Programmer<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[5,6,8,9,10,7],"_links":{"self":[{"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=\/wp\/v2\/posts\/317"}],"collection":[{"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=317"}],"version-history":[{"count":46,"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=\/wp\/v2\/posts\/317\/revisions"}],"predecessor-version":[{"id":384,"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=\/wp\/v2\/posts\/317\/revisions\/384"}],"wp:attachment":[{"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/om0xa.dxradio.sk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}