Developers
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
April 2017
- 13 participants
- 24 discussions
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1491696168 14400
# Node ID 55efac8845ad21bd404ecd9c94e8dfcb787c47c1
# Parent 0714032989d2d0ea7fa82c231e4ab374835375b4
[UV-5R] Fix pep8 Issue
This patch fixes a pep8 issue that I thought I has already fixed.
releated to issue #4445
diff -r 0714032989d2 -r 55efac8845ad chirp/drivers/uv5r.py
--- a/chirp/drivers/uv5r.py Sun Apr 02 10:39:43 2017 -0400
+++ b/chirp/drivers/uv5r.py Sat Apr 08 20:02:48 2017 -0400
@@ -666,7 +666,7 @@
addr = 0x1808 + (i - 0x1EC0)
_send_block(radio, i, radio.get_mmap()[addr:addr + 0x10])
- if image_matched_radio == False:
+ if not image_matched_radio:
msg = ("Upload finished, but the 'Other Settings' "
"could not be sent because the firmware "
"version of the image (%s) does not match "
1
0
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1491696355 14400
# Node ID db5569b02efe9feb59ac9f62f659173f974b9cf0
# Parent 55efac8845ad21bd404ecd9c94e8dfcb787c47c1
[KT8900D] Add Alias for Surecom S-KT8900D
Owners of the Surecom S-KT8900D mobile radio can easily be confused as to which
vendor/model to choose in order to program their radio because it is a variant
of the QYT KT7900D mobile radio and not the QYT KT8900D as you would assume.
This patch adds an alias for the Surecom KT-8900D which will automatcally
choose QYT KT7900D as the vendor/model.
related to issue #4697
diff -r 55efac8845ad -r db5569b02efe chirp/drivers/btech.py
--- a/chirp/drivers/btech.py Sat Apr 08 20:02:48 2017 -0400
+++ b/chirp/drivers/btech.py Sat Apr 08 20:05:55 2017 -0400
@@ -3602,6 +3602,13 @@
self._uhf_range = uhf
+# Declaring Aliases (Clones of the real radios)
+class SKT8900D(chirp_common.Alias):
+ VENDOR = "Surecom"
+ MODEL = "S-KT8900D"
+
+
+# real radios
@directory.register
class UV25X2(BTechColor):
"""Baofeng Tech UV25X2"""
@@ -3651,6 +3658,8 @@
_350_range = (350000000, 371000000)
_magic = MSTRING_KT8900D
_fileid = [KT7900D_fp, ]
+ # Clones
+ ALIASES = [SKT8900D, ]
@directory.register
1
0
Tested changes:
[Jim Unroe <rock.unroe(a)gmail.com>] [UV-5R] "Incorrect 'Model' selected." error
When Baofeng started shipping tri-power radios back in 2014, the firmware
version format could be used to identify if the detected radio had 2 power
levels (HIGH/LOW) or 3 power levels (HIGH/MID/LOW). CHIRP would then use this
firmware version to not only determine if the user had selected the correct
radio model, but also to present the only settings that were available on the
selected model.
Recently Baofeng radio models with 3 power levels have been shipping with with
the HN5RV001 firmware version. This same firmware version, as it has for the
last 2 years, continues to ship in radio models that have only 2 power levels.
This firmware version defeats CHIRP's ability to differentiate on its own
between these two model types.
This patch addresses the problem in 2 ways.
1. for radios with the HN5RV001 firmware version, CHIRP will assume that the
user has selected the correct radio model. The selected model is then appended
to the end of the image so CHIRP can identify the radio model when image is
loaded back into CHIRP at a later time.
2. the driver will now selectively uploads the image in ranges, thus bypassing
specific areas of memory that must not be overwritten by images from radios
with a different firmware version.
This patch also addresses, in a similar way, a related problem where the radio
does not report a firmware version at all to CHIRP.
releated to issue #4445 and many others
[Tom Hayward <tom(a)tomh.us>] [id880] Fix typo in charset definition. #281
[Tom Hayward <tom(a)tomh.us>] [thf6a] Support full charset (ASCII). Fixes #141
[Tom Hayward <tom(a)tomh.us>] [id880] Support full charset. Fixes #281
[Tom Hayward <tom(a)tomh.us>] [vx5] Support full charset (ASCII). Fixes #292
[Tom Hayward <tom(a)tomh.us>] [id31a] set used bit when creating new memory, clear when deleting. Fixes #269
[Tom Hayward <tom(a)tomh.us>] Support PyGTK < 2.22 in bank edit. Fixes #231
[Tom Hayward <tom(a)tomh.us>] [d710] [v71] [d72] Fix tone list (not all tones are supported). Fixes #212
[Dan Smith <dsmith(a)danplanet.com>] [vx7] Fix setting memory power levels on 220MHz band
Fixes #214
[Dan Smith <dsmith(a)danplanet.com>] fips: Pennsylvania FIPS code was wrong. #117
[Marco Filippi <iz3gme.marco(a)gmail.com>] Consider lower bound frequency of each valid_band as valid
Fix bug #181
[Tom Hayward <tom(a)tomh.us>] tmd700: allow 8-char names. Fixes #176
[Dan Smith <dsmith(a)danplanet.com>] Fix the "blind deletion" problem, as well as properly direct copy/paste
Fixes #172
[David Griffith <dave(a)661.org>] Bug #155 fix: VX-7 1.25m power levels
[David Griffith <dave(a)661.org>] New INSTALL and README files
Fixes #122
[Tom Hayward <tom(a)tomh.us>] thd72: only use hardware flow on OS X. Fixes #166
[Marco Filippi <iz3gme.marco(a)gmail.com>] [FT817] Tone freq not set correctly
Same as #88 for FT857, to avoid code duplication fix code have been moved from
ft857 to its ancestor class
Fix bug #163
[Tom Hayward <tom(a)tomh.us>] Fix Mac .app so paths with spaces work. Fixes Bug #145
Full log:
Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/chirp-test/workspace
[workspace] $ hg showconfig paths.default
[workspace] $ hg pull --rev default
[workspace] $ hg update --clean --rev default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[workspace] $ hg log --rev . --template {node}
[workspace] $ hg log --rev . --template {rev}
[workspace] $ hg log --rev 6ad4b478463019b1a1af7a0f7e7b3e7083994988
[workspace] $ hg log --template "<changeset node='{node}' author='{author|xmlescape}' rev='{rev}' date='{date}'><msg>{desc|xmlescape}</msg><added>{file_adds|stringify|xmlescape}</added><deleted>{file_dels|stringify|xmlescape}</deleted><files>{files|stringify|xmlescape}</files><parents>{parents}</parents></changeset>\n" --rev default:0 --follow --prune 6ad4b478463019b1a1af7a0f7e7b3e7083994988
No emails were triggered.
[workspace] $ /bin/sh -xe /tmp/hudson2127746995444648612.sh
[workspace] $ /bin/sh -xe /tmp/hudson2980772600046310731.sh
+ PATH=/usr/bin:/bin:/usr/local/bin ./run_all_tests.sh
test_bit_array (tests.unit.test_bitwise.TestBitType) ... ok
test_bit_array_fail (tests.unit.test_bitwise.TestBitType) ... ok
test_bitfield_u16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_u8 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul16 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bitfield_ul24 (tests.unit.test_bitwise.TestBitfieldTypes) ... ok
test_bbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_bbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_lbcd_array (tests.unit.test_bitwise.TestBitwiseBCDTypes) ... ok
test_int_array (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_u8 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul16 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul24 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_type_ul32 (tests.unit.test_bitwise.TestBitwiseBaseIntTypes) ... ok
test_char (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_invalid_chars (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_string_wrong_length (tests.unit.test_bitwise.TestBitwiseCharTypes) ... ok
test_comment_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_comment_inline_cppstyle (tests.unit.test_bitwise.TestBitwiseComments) ... ok
test_missing_semicolon (tests.unit.test_bitwise.TestBitwiseErrors) ... ok
test_seek (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_seekto (tests.unit.test_bitwise.TestBitwiseSeek) ... ok
test_struct_one_element (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_two_elements (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
test_struct_writes (tests.unit.test_bitwise.TestBitwiseStructTypes) ... ok
split_tone_encode_test_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
split_tone_encode_test_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_dtcs_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_none_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_cross_tone_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_dtcs (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_none (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tone (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_split_tone_decode_tsql (tests.unit.test_chirp_common.TestSplitTone) ... ok
test_fix_rounded_step_250 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_500 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_fix_rounded_step_750 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_12_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_2_5 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_5_0 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_6_25 (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_is_fractional_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_required_step_fail (tests.unit.test_chirp_common.TestStepFunctions) ... ok
test_format_freq (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_bad (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_decimal (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whitespace (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_parse_freq_whole (tests.unit.test_chirp_common.TestUtilityFunctions) ... ok
test_ensure_has_calls_almost_full (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_empty (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_partial (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full1 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_rptcall_full2 (tests.unit.test_import_logic.DstarTests) ... ok
test_ensure_has_calls_urcall_full (tests.unit.test_import_logic.DstarTests) ... ok
test_import_bank (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffA_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_dtcs_diffB_dtcs (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_negative (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_too_big_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_uhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_duplex_vhf (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_errors (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mem_with_warnings (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_invalid (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_am (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_mode_valid_fm (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_name (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_closest (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_dst (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_no_src (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_power_same (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffA_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_import_tone_diffB_tsql (tests.unit.test_import_logic.ImportFieldTests) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseBank) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseBankModel) ... ok
test_mapping (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestBaseMapping) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_get_name (tests.unit.test_mappingmodel.TestBaseMappingModel) ... ok
test_base_class (tests.unit.test_mappingmodel.TestBaseMappingModelIndexInterface) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomBankModel) ... ok
test_icom_bank (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_mapping_eq (tests.unit.test_mappingmodel.TestIcomBanks) ... ok
test_add_memory_to_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_index_bounds (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mapping_memories (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_memory_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_next_mapping_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_get_num_mappings (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_no_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_remove_memory_from_mapping_wrong_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_bank (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_set_memory_index_bad_index (tests.unit.test_mappingmodel.TestIcomIndexedBankModel) ... ok
test_auto_tone_mode_cross (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_pol (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_dtcs_rx (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tone (tests.unit.test_memedit_edits.TestEdits) ... ok
test_auto_tone_mode_tsql (tests.unit.test_memedit_edits.TestEdits) ... ok
test_init (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_bad_portnames (tests.unit.test_platform.Win32PlatformTest) ... ok
test_serial_ports_sorted (tests.unit.test_platform.Win32PlatformTest) ... ok
test_apply_callback (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_group (tests.unit.test_settings.TestSettingContainers) ... ok
test_radio_setting_multi (tests.unit.test_settings.TestSettingContainers) ... ok
test_changed (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_boolean (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_float (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_integer (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_list (tests.unit.test_settings.TestSettingValues) ... ok
test_radio_setting_value_string (tests.unit.test_settings.TestSettingValues) ... ok
test_validate_callback (tests.unit.test_settings.TestSettingValues) ... ok
test_delete_hole_with_all (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_all_full (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_with_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_delete_hole_without_hole (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_with_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
test_insert_hole_without_space (tests.unit.test_shiftdialog.ShiftDialogTest) ... ok
----------------------------------------------------------------------
Ran 151 tests in 0.053s
OK
Patch 'tip' is OK
Checking for PEP8 regressions...
./chirp/drivers/icf.py:202:26: E261 at least two spaces before inline comment
./chirp/drivers/icf.py:266:30: E261 at least two spaces before inline comment
./chirp/drivers/uv5r.py:669:28: E712 comparison to False should be 'if cond is False:' or 'if not cond:'
./chirp/platform.py:255:80: E501 line too long (82 > 79 characters)
./chirp/ui/mainapp.py:1909:80: E501 line too long (82 > 79 characters)
./chirp/ui/mainapp.py:1965:80: E501 line too long (82 > 79 characters)
real 0m7.707s
user 0m7.596s
sys 0m0.036s
================================================
Tests OK
+ cat /var/lib/jenkins/.chirp/debug.log
[2017-04-05 10:58:20,686] chirp.logger - DEBUG: CHIRP 0.3.0dev on Linux - Ubuntu 16.04.1 LTS (Python 2.7.12)
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TH-D7 = THD7Radio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TH-D7G = THD7GRadio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TM-D700 = TMD700Radio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TM-V7 = TMV7Radio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TM-G707 = TMG707Radio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TH-G71 = THG71Radio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TH-F6 = THF6ARadio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TH-F7 = THF7ERadio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TM-D710 = TMD710Radio
[2017-04-05 10:58:20,728] chirp.directory - INFO: Registered Kenwood_TH-D72_live_mode = THD72Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Kenwood_TM-V71 = TMV71Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Kenwood_TM-D710G = TMD710GRadio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Kenwood_TH-K2 = THK2Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Kenwood_TM-271 = TM271Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Kenwood_TM-281 = TM281Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Kenwood_TM-471 = TM471Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Icom_7200 = Icom7200Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Icom_IC-7000 = Icom7000Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Icom_IC-7100 = Icom7100Radio
[2017-04-05 10:58:20,729] chirp.directory - INFO: Registered Icom_746 = Icom746Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DR03T = DR03Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DR06T = DR06Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DR135T = DR135Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DR235T = DR235Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DR435T = DR435Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DJ596 = DJ596Radio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Jetstream_JT220M = JT220MRadio
[2017-04-05 10:58:20,732] chirp.directory - INFO: Registered Alinco_DJ175 = DJ175Radio
[2017-04-05 10:58:20,733] chirp.directory - INFO: Registered Alinco_DJ-G7EG = AlincoDJG7EG
[2017-04-05 10:58:20,733] chirp.directory - INFO: Registered AnyTone_5888UV = AnyTone5888UVRadio
[2017-04-05 10:58:20,733] chirp.directory - INFO: Registered Intek_HR-2040 = IntekHR2040Radio
[2017-04-05 10:58:20,733] chirp.directory - INFO: Registered Polmar_DB-50M = PolmarDB50MRadio
[2017-04-05 10:58:20,733] chirp.directory - INFO: Registered Powerwerx_DB-750X = PowerwerxDB750XRadio
[2017-04-05 10:58:20,733] chirp.directory - INFO: Registered AnyTone_TERMN-8R = AnyToneTERMN8RRadio
[2017-04-05 10:58:20,734] chirp.directory - INFO: Registered AnyTone_OBLTR-8R = AnyToneOBLTR8RRadio
[2017-04-05 10:58:20,734] chirp.directory - INFO: Registered Baofeng_UV-3R = UV3RRadio
[2017-04-05 10:58:20,735] chirp.directory - INFO: Registered Baofeng_BF-A58 = BFA58
[2017-04-05 10:58:20,735] chirp.directory - INFO: Registered Baofeng_UV-82WP = UV82WP
[2017-04-05 10:58:20,735] chirp.directory - INFO: Registered Baofeng_GT-3WP = GT3WP
[2017-04-05 10:58:20,735] chirp.directory - INFO: Registered Retevis_RT6 = RT6
[2017-04-05 10:58:20,735] chirp.directory - INFO: Registered Baojie_BJ-9900 = BJ9900Radio
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Baofeng_UV-5R = BaofengUV5RGeneric
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Baofeng_F-11 = BaofengF11Radio
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Baofeng_UV-82 = BaofengUV82Radio
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Baofeng_UV-6 = BaofengUV6Radio
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Intek_KT-980HP = IntekKT980Radio
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Baofeng_BF-F8HP = BaofengBFF8HPRadio
[2017-04-05 10:58:20,736] chirp.directory - INFO: Registered Baofeng_UV-82HP = BaofengUV82HPRadio
[2017-04-05 10:58:20,737] chirp.directory - INFO: Registered Baojie_BJ-UV55 = BaojieBJUV55Radio
[2017-04-05 10:58:20,737] chirp.directory - INFO: Registered BTECH_UV-2501 = UV2501
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered BTECH_UV-2501+220 = UV2501_220
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered BTECH_UV-5001 = UV5001
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered WACCOM_MINI-8900 = MINI8900
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered QYT_KT-UV980 = KTUV980
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered QYT_KT8900 = KT9800
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered QYT_KT8900R = KT9800R
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered LUITON_LT-588UV = LT588UV
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered BTECH_UV-25X2 = UV25X2
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered BTECH_UV-25X4 = UV25X4
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered BTECH_UV-50X2 = UV50X2
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered QYT_KT7900D = KT7900D
[2017-04-05 10:58:20,738] chirp.directory - INFO: Registered QYT_KT8900D = KT8900D
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-268A = FD268ARadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-268B = FD268BRadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-288A = FD288ARadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-288B = FD288BRadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-150A = FD150ARadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-160A = FD160ARadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-450A = FD450ARadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-460A = FD460ARadio
[2017-04-05 10:58:20,739] chirp.directory - INFO: Registered Feidaxin_FD-460UH = FD460UHRadio
[2017-04-05 10:58:20,740] chirp.directory - INFO: Registered Yaesu_FT-1802M = FT1802Radio
[2017-04-05 10:58:20,741] chirp.directory - INFO: Registered Yaesu_FT-1D_R = FT1Radio
[2017-04-05 10:58:20,741] chirp.directory - INFO: Registered Yaesu_FT-2800M = FT2800Radio
[2017-04-05 10:58:20,741] chirp.directory - INFO: Registered Yaesu_FT-2900R_1900R = FT2900Radio
[2017-04-05 10:58:20,742] chirp.directory - INFO: Registered Yaesu_FT-50 = FT50Radio
[2017-04-05 10:58:20,742] chirp.directory - INFO: Registered Yaesu_FT-60 = FT60Radio
[2017-04-05 10:58:20,742] chirp.directory - INFO: Registered Yaesu_FT-7800_7900 = FT7800Radio
[2017-04-05 10:58:20,742] chirp.directory - INFO: Registered Yaesu_FT-8800 = FT8800Radio
[2017-04-05 10:58:20,743] chirp.directory - INFO: Registered Yaesu_FT-8900 = FT8900Radio
[2017-04-05 10:58:20,743] chirp.directory - INFO: Registered Yaesu_FT-8100 = FT8100Radio
[2017-04-05 10:58:20,743] chirp.directory - INFO: Registered Yaesu_FT-817 = FT817Radio
[2017-04-05 10:58:20,743] chirp.directory - INFO: Registered Yaesu_FT-817ND = FT817NDRadio
[2017-04-05 10:58:20,743] chirp.directory - INFO: Registered Yaesu_FT-817ND_US = FT817NDUSRadio
[2017-04-05 10:58:20,744] chirp.directory - INFO: Registered Yaesu_FT-857_897 = FT857Radio
[2017-04-05 10:58:20,744] chirp.directory - INFO: Registered Yaesu_FT-857_897_US = FT857USRadio
[2017-04-05 10:58:20,744] chirp.directory - INFO: Registered Yaesu_FT-90 = FT90Radio
[2017-04-05 10:58:20,744] chirp.directory - INFO: Registered Yaesu_FTM-350 = FTM350Radio
[2017-04-05 10:58:20,745] chirp.directory - INFO: Registered Generic_CSV = CSVRadio
[2017-04-05 10:58:20,745] chirp.directory - INFO: Registered Commander_KG-UV = CommanderCSVRadio
[2017-04-05 10:58:20,745] chirp.directory - INFO: Registered RT_Systems_CSV = RTCSVRadio
[2017-04-05 10:58:20,746] chirp.directory - INFO: Registered ARRL_Travel_Plus = TpeRadio
[2017-04-05 10:58:20,757] chirp.directory - INFO: Registered Generic_XML = XMLRadio
[2017-04-05 10:58:20,757] chirp.directory - INFO: Registered BTECH_GMRS-V1 = GMRSV1
[2017-04-05 10:58:20,760] chirp.directory - INFO: Registered Baofeng_BF-888 = H777Radio
[2017-04-05 10:58:20,761] chirp.directory - INFO: Registered HobbyPCB_RS-UV3 = HobbyPCBRSUV3Radio
[2017-04-05 10:58:20,761] chirp.directory - INFO: Registered Icom_IC-208H = IC208Radio
[2017-04-05 10:58:20,761] chirp.directory - INFO: Registered Icom_IC-2100H = IC2100Radio
[2017-04-05 10:58:20,761] chirp.directory - INFO: Registered Icom_IC-2200H = IC2200Radio
[2017-04-05 10:58:20,761] chirp.directory - INFO: Registered Icom_IC-2720H = IC2720Radio
[2017-04-05 10:58:20,762] chirp.directory - INFO: Registered Icom_IC-2820H = IC2820Radio
[2017-04-05 10:58:20,762] chirp.directory - INFO: Registered Icom_IC-91_92AD = IC9xRadio
[2017-04-05 10:58:20,762] chirp.directory - INFO: Registered Icom_IC-P7 = ICP7Radio
[2017-04-05 10:58:20,762] chirp.directory - INFO: Registered Icom_IC-Q7A = ICQ7Radio
[2017-04-05 10:58:20,763] chirp.directory - INFO: Registered Icom_IC-T70 = ICT70Radio
[2017-04-05 10:58:20,763] chirp.directory - INFO: Registered Icom_IC-T7H = ICT7HRadio
[2017-04-05 10:58:20,763] chirp.directory - INFO: Registered Icom_IC-T8A = ICT8ARadio
[2017-04-05 10:58:20,763] chirp.directory - INFO: Registered Icom_IC-W32A = ICW32ARadio
[2017-04-05 10:58:20,763] chirp.directory - INFO: Registered Icom_IC-W32E = ICW32ERadio
[2017-04-05 10:58:20,764] chirp.directory - INFO: Registered Icom_IC-V82_U82 = ICx8xRadio
[2017-04-05 10:58:20,764] chirp.directory - INFO: Registered Icom_ID-31A = ID31Radio
[2017-04-05 10:58:20,764] chirp.directory - INFO: Registered Icom_ID-51 = ID51Radio
[2017-04-05 10:58:20,764] chirp.directory - INFO: Registered Icom_ID-51_Plus = ID51PLUSRadio
[2017-04-05 10:58:20,764] chirp.directory - INFO: Registered Icom_ID-800H_v2 = ID800v2Radio
[2017-04-05 10:58:20,765] chirp.directory - INFO: Registered Icom_ID-880H = ID880Radio
[2017-04-05 10:58:20,765] chirp.directory - INFO: Registered Icom_ID-80H = ID80Radio
[2017-04-05 10:58:20,765] chirp.directory - INFO: Registered Kenwood_HMK = HMKRadio
[2017-04-05 10:58:20,765] chirp.directory - INFO: Registered Kenwood_ITM = ITMRadio
[2017-04-05 10:58:20,766] chirp.directory - INFO: Registered Wouxun_KG-UV8D = KGUV8DRadio
[2017-04-05 10:58:20,766] chirp.directory - INFO: Registered KYD_NC-630A = NC630aRadio
[2017-04-05 10:58:20,766] chirp.directory - INFO: Registered KYD_IP-620 = IP620Radio
[2017-04-05 10:58:20,767] chirp.directory - INFO: Registered Leixen_VV-898 = LeixenVV898Radio
[2017-04-05 10:58:20,767] chirp.directory - INFO: Registered Jetstream_JT270M = JetstreamJT270MRadio
[2017-04-05 10:58:20,767] chirp.directory - INFO: Registered Jetstream_JT270MH = JetstreamJT270MHRadio
[2017-04-05 10:58:20,767] chirp.directory - INFO: Registered Leixen_VV-898S = LeixenVV898SRadio
[2017-04-05 10:58:20,768] chirp.directory - INFO: Registered LUITON_LT-725UV = LT725UV
[2017-04-05 10:58:20,768] chirp.directory - INFO: Registered Wouxun_KG-UVD1P = KGUVD1PRadio
[2017-04-05 10:58:20,768] chirp.directory - INFO: Registered Wouxun_KG-UV6 = KGUV6DRadio
[2017-04-05 10:58:20,769] chirp.directory - INFO: Registered Wouxun_KG-816 = KG816Radio
[2017-04-05 10:58:20,769] chirp.directory - INFO: Registered Wouxun_KG-818 = KG818Radio
[2017-04-05 10:58:20,769] chirp.directory - INFO: Registered Puxing_PX-777 = Puxing777Radio
[2017-04-05 10:58:20,769] chirp.directory - INFO: Registered Puxing_PX-2R = Puxing2RRadio
[2017-04-05 10:58:20,769] chirp.directory - INFO: Registered Puxing_PX-888K = Puxing_PX888K_Radio
[2017-04-05 10:58:20,770] chirp.directory - INFO: Registered Retevis_RT1 = RT1Radio
[2017-04-05 10:58:20,770] chirp.directory - INFO: Registered Retevis_RT21 = RT21Radio
[2017-04-05 10:58:20,770] chirp.directory - INFO: Registered Retevis_RT22 = RT22Radio
[2017-04-05 10:58:20,770] chirp.directory - INFO: Registered WLN_KD-C1 = KDC1
[2017-04-05 10:58:20,771] chirp.directory - INFO: Registered Zastone_ZT-X6 = ZTX6
[2017-04-05 10:58:20,771] chirp.directory - INFO: Registered LUITON_LT-316 = LT316
[2017-04-05 10:58:20,771] chirp.directory - INFO: Registered TID_TD-M8 = TDM8
[2017-04-05 10:58:20,771] chirp.directory - INFO: Registered TDXone_TD-Q8A = TDXoneTDQ8A
[2017-04-05 10:58:20,772] chirp.directory - INFO: Registered TYT_TH-7800_File = TYTTH7800File
[2017-04-05 10:58:20,772] chirp.directory - INFO: Registered TYT_TH-7800 = TYTTH7800Radio
[2017-04-05 10:58:20,772] chirp.directory - INFO: Registered TYT_TH9000_220 = Th9000220Radio
[2017-04-05 10:58:20,772] chirp.directory - INFO: Registered TYT_TH9000_144 = Th9000144Radio
[2017-04-05 10:58:20,772] chirp.directory - INFO: Registered TYT_TH9000_440 = Th9000440Radio
[2017-04-05 10:58:20,773] chirp.directory - INFO: Registered TYT_TH-9800_File = TYTTH9800File
[2017-04-05 10:58:20,773] chirp.directory - INFO: Registered TYT_TH-9800 = TYTTH9800Radio
[2017-04-05 10:58:20,773] chirp.directory - INFO: Registered TYT_TH-UV3R = TYTUV3RRadio
[2017-04-05 10:58:20,773] chirp.directory - INFO: Registered TYT_TH-UV3R-25 = TYTUV3R25Radio
[2017-04-05 10:58:20,773] chirp.directory - INFO: Registered TYT_TH-UVF8D = TYTUVF8DRadio
[2017-04-05 10:58:20,774] chirp.directory - INFO: Registered Kenwood_TH-D72_clone_mode = THD72Radio
[2017-04-05 10:58:20,774] chirp.directory - INFO: Registered TYT_TH-UVF1 = TYTTHUVF1Radio
[2017-04-05 10:58:20,774] chirp.directory - INFO: Registered Kenwood_TK-260 = TK260_Radio
[2017-04-05 10:58:20,774] chirp.directory - INFO: Registered Kenwood_TK-270 = TK270_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-272 = TK272_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-278 = TK278_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-360 = TK360_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-370 = TK370_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-372 = TK372_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-378 = TK378_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-760 = TK760_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-762 = TK762_Radio
[2017-04-05 10:58:20,775] chirp.directory - INFO: Registered Kenwood_TK-768 = TK768_Radio
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-860 = TK860_Radio
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-862 = TK862_Radio
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-868 = TK868_Radio
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-868G = TK868G_Radios
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-862G = TK862G_Radios
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-860G = TK860G_Radios
[2017-04-05 10:58:20,776] chirp.directory - INFO: Registered Kenwood_TK-768G = TK768G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-762G = TK762G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-760G = TK760G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-388G = TK388G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-378G = TK378G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-372G = TK372G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-370G = TK370G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-360G = TK360G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-278G = TK278G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-272G = TK272G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-270G = TK270G_Radios
[2017-04-05 10:58:20,777] chirp.directory - INFO: Registered Kenwood_TK-260G = TK260G_Radios
[2017-04-05 10:58:20,778] chirp.directory - INFO: Registered Kenwood_TK-7102 = KenwoodTK7102Radio
[2017-04-05 10:58:20,778] chirp.directory - INFO: Registered Kenwood_TK-8102 = KenwoodTK8102Radio
[2017-04-05 10:58:20,778] chirp.directory - INFO: Registered Kenwood_TK-7108 = KenwoodTK7108Radio
[2017-04-05 10:58:20,778] chirp.directory - INFO: Registered Kenwood_TK-8108 = KenwoodTK8108Radio
[2017-04-05 10:58:20,778] chirp.directory - INFO: Registered Kenwood_TS-2000 = TS2000Radio
[2017-04-05 10:58:20,779] chirp.directory - INFO: Registered BTECH_UV-5X3 = UV5X3
[2017-04-05 10:58:20,779] chirp.directory - INFO: Registered Baofeng_UV-6R = UV6R
[2017-04-05 10:58:20,779] chirp.directory - INFO: Registered Baofeng_UV-B5 = BaofengUVB5
[2017-04-05 10:58:20,780] chirp.directory - INFO: Registered BTECH_UV-50X3 = UV50X3
[2017-04-05 10:58:20,780] chirp.directory - INFO: Registered Yaesu_VX-170 = VX170Radio
[2017-04-05 10:58:20,780] chirp.directory - INFO: Registered Yaesu_VX-2 = VX2Radio
[2017-04-05 10:58:20,781] chirp.directory - INFO: Registered Yaesu_VX-3 = VX3Radio
[2017-04-05 10:58:20,781] chirp.directory - INFO: Registered Yaesu_VX-5 = VX5Radio
[2017-04-05 10:58:20,781] chirp.directory - INFO: Registered Yaesu_VX-6 = VX6Radio
[2017-04-05 10:58:20,782] chirp.directory - INFO: Registered Yaesu_VX-7 = VX7Radio
[2017-04-05 10:58:20,782] chirp.directory - INFO: Registered Yaesu_VX-8_R = VX8Radio
[2017-04-05 10:58:20,782] chirp.directory - INFO: Registered Yaesu_VX-8_DR = VX8DRadio
[2017-04-05 10:58:20,782] chirp.directory - INFO: Registered Yaesu_VX-8_GE = VX8GERadio
[2017-04-05 10:58:20,783] chirp.directory - INFO: Registered Vertex_Standard_VXA-700 = VXA700Radio
Email was triggered for: Success
Sending email for trigger: Success
1
0
02 Apr '17
# HG changeset patch
# User Jim Unroe <rock.unroe(a)gmail.com>
# Date 1491143983 14400
# Node ID 0714032989d2d0ea7fa82c231e4ab374835375b4
# Parent 6ad4b478463019b1a1af7a0f7e7b3e7083994988
[UV-5R] "Incorrect 'Model' selected." error
When Baofeng started shipping tri-power radios back in 2014, the firmware
version format could be used to identify if the detected radio had 2 power
levels (HIGH/LOW) or 3 power levels (HIGH/MID/LOW). CHIRP would then use this
firmware version to not only determine if the user had selected the correct
radio model, but also to present the only settings that were available on the
selected model.
Recently Baofeng radio models with 3 power levels have been shipping with with
the HN5RV001 firmware version. This same firmware version, as it has for the
last 2 years, continues to ship in radio models that have only 2 power levels.
This firmware version defeats CHIRP's ability to differentiate on its own
between these two model types.
This patch addresses the problem in 2 ways.
1. for radios with the HN5RV001 firmware version, CHIRP will assume that the
user has selected the correct radio model. The selected model is then appended
to the end of the image so CHIRP can identify the radio model when image is
loaded back into CHIRP at a later time.
2. the driver will now selectively uploads the image in ranges, thus bypassing
specific areas of memory that must not be overwritten by images from radios
with a different firmware version.
This patch also addresses, in a similar way, a related problem where the radio
does not report a firmware version at all to CHIRP.
releated to issue #4445 and many others
diff -r 6ad4b4784630 -r 0714032989d2 chirp/drivers/uv5r.py
--- a/chirp/drivers/uv5r.py Thu Mar 30 12:47:43 2017 -0700
+++ b/chirp/drivers/uv5r.py Sun Apr 02 10:39:43 2017 -0400
@@ -282,7 +282,7 @@
BASETYPE_UV5R = ["BFS", "BFB", "N5R-2", "N5R2", "N5RV", "BTS", "D5R2"]
BASETYPE_F11 = ["USA"]
-BASETYPE_UV82 = ["US2S", "B82S", "BF82", "N82-2", "N822"]
+BASETYPE_UV82 = ["US2S2", "B82S", "BF82", "N82-2", "N822"]
BASETYPE_BJ55 = ["BJ55"] # needed for for the Baojie UV-55 in bjuv55.py
BASETYPE_UV6 = ["BF1", "UV6"]
BASETYPE_KT980HP = ["BFP3V3 B"]
@@ -544,8 +544,29 @@
radio_version = _get_radio_firmware_version(radio)
LOG.info("Radio Version is %s" % repr(radio_version))
- if not any(type in radio_version for type in radio._basetype):
+ if "HN5RV" in radio_version:
+ # A radio with HN5RV firmware has been detected. It could be a
+ # UV-5R style radio with HIGH/LOW power levels or it could be a
+ # BF-F8HP style radio with HIGH/MID/LOW power levels.
+ # We are going to count on the user to make the right choice and
+ # then append that model type to the end of the image so it can
+ # be properly detected when loaded.
+ append_model = True
+ elif "\xFF" * 14 in radio_version:
+ # A radio UV-5R style radio that reports no firmware version has
+ # been detected.
+ # We are going to count on the user to make the right choice and
+ # then append that model type to the end of the image so it can
+ # be properly detected when loaded.
+ append_model = True
+ elif not any(type in radio_version for type in radio._basetype):
+ # This radio can't be properly detected by parsing its firmware
+ # version.
raise errors.RadioError("Incorrect 'Model' selected.")
+ else:
+ # This radio can be properly detected by parsing its firmware version.
+ # There is no need to append its model type to the end of the image.
+ append_model = False
# Main block
LOG.debug("downloading main block...")
@@ -558,6 +579,10 @@
# Auxiliary block starts at 0x1ECO (?)
for i in range(0x1EC0, 0x2000, 0x40):
data += _read_block(radio, i, 0x40, False)
+
+ if append_model:
+ data += radio.MODEL.ljust(8)
+
LOG.debug("done.")
return memmap.MemoryMap(data)
@@ -586,34 +611,68 @@
LOG.info("Image Version is %s" % repr(image_version))
LOG.info("Radio Version is %s" % repr(radio_version))
- if image_version != radio_version:
+ # default ranges
+ _ranges_main_default = [
+ (0x0008, 0x0CF8),
+ (0x0D08, 0x0DF8),
+ (0x0E08, 0x1808)
+ ]
+ _ranges_aux_default = [
+ (0x1EC0, 0x1EF0),
+ ]
+
+ # extra aux ranges
+ _ranges_aux_extra = [
+ (0x1F60, 0x1F70),
+ (0x1F80, 0x1F90),
+ (0x1FC0, 0x1FD0)
+ ]
+
+ if image_version == radio_version:
+ image_matched_radio = True
+ if image_version.startswith("HN5RV"):
+ ranges_main = _ranges_main_default
+ ranges_aux = _ranges_aux_default + _ranges_aux_extra
+ elif image_version == 0xFF * 14:
+ ranges_main = _ranges_main_default
+ ranges_aux = _ranges_aux_default + _ranges_aux_extra
+ else:
+ ranges_main = radio._ranges_main
+ ranges_aux = radio._ranges_aux
+ elif any(type in radio_version for type in radio._basetype):
+ image_matched_radio = False
+ ranges_main = _ranges_main_default
+ ranges_aux = _ranges_aux_default
+ else:
msg = ("The upload was stopped because the firmware "
"version of the image (%s) does not match that "
"of the radio (%s).")
raise errors.RadioError(msg % (image_version, radio_version))
# Main block
- for i in range(0x08, 0x1808, 0x10):
- _send_block(radio, i - 0x08, radio.get_mmap()[i:i + 0x10])
- _do_status(radio, i)
- _do_status(radio, radio.get_memsize())
+ for start_addr, end_addr in ranges_main:
+ for i in range(start_addr, end_addr, 0x10):
+ _send_block(radio, i - 0x08, radio.get_mmap()[i:i + 0x10])
+ _do_status(radio, i)
+ _do_status(radio, radio.get_memsize())
if len(radio.get_mmap().get_packed()) == 0x1808:
LOG.info("Old image, not writing aux block")
return # Old image, no aux block
- if image_version != radio_version:
+ # Auxiliary block at radio address 0x1EC0, our offset 0x1808
+ for start_addr, end_addr in ranges_aux:
+ for i in range(start_addr, end_addr, 0x10):
+ addr = 0x1808 + (i - 0x1EC0)
+ _send_block(radio, i, radio.get_mmap()[addr:addr + 0x10])
+
+ if image_matched_radio == False:
msg = ("Upload finished, but the 'Other Settings' "
"could not be sent because the firmware "
"version of the image (%s) does not match "
"that of the radio (%s).")
raise errors.RadioError(msg % (image_version, radio_version))
- # Auxiliary block at radio address 0x1EC0, our offset 0x1808
- for i in range(0x1EC0, 0x2000, 0x10):
- addr = 0x1808 + (i - 0x1EC0)
- _send_block(radio, i, radio.get_mmap()[addr:addr + 0x10])
-
UV5R_POWER_LEVELS = [chirp_common.PowerLevel("High", watts=4.00),
chirp_common.PowerLevel("Low", watts=1.00)]
@@ -627,6 +686,20 @@
"!@#$%^&*()+-=[]:\";'<>?,./"
+def model_match(cls, data):
+ """Match the opened/downloaded image to the correct version"""
+
+ if len(data) == 0x1950:
+ rid = data[0x1948:0x1950]
+ return rid.startswith(cls.MODEL)
+ elif len(data) == 0x1948:
+ rid = data[cls._fw_ver_file_start:cls._fw_ver_file_stop]
+ if any(type in rid for type in cls._basetype):
+ return True
+ else:
+ return False
+
+
class BaofengUV5R(chirp_common.CloneModeRadio,
chirp_common.ExperimentalRadio):
@@ -649,6 +722,13 @@
_fw_ver_file_start = 0x1838
_fw_ver_file_stop = 0x1846
+ _ranges_main = [
+ (0x0008, 0x1808),
+ ]
+ _ranges_aux = [
+ (0x1EC0, 0x2000),
+ ]
+
@classmethod
def get_prompts(cls):
rp = chirp_common.RadioPrompts()
@@ -709,13 +789,10 @@
def match_model(cls, filedata, filename):
match_size = False
match_model = False
- if len(filedata) in [0x1808, 0x1948]:
+ if len(filedata) in [0x1808, 0x1948, 0x1950]:
match_size = True
- fwdata = _firmware_version_from_data(filedata,
- cls._fw_ver_file_start,
- cls._fw_ver_file_stop)
- if any(type in fwdata for type in cls._basetype):
- match_model = True
+ match_model = model_match(cls, filedata)
+
if match_size and match_model:
return True
else:
@@ -1189,8 +1266,9 @@
if self.MODEL == "UV-82HP":
# this is a UV-82HP only feature
- rs = RadioSetting("vfomrlock", "VFO/MR Switching",
- RadioSettingValueBoolean(_settings.vfomrlock))
+ rs = RadioSetting(
+ "vfomrlock", "VFO/MR Switching (BTech UV-82HP only)",
+ RadioSettingValueBoolean(_settings.vfomrlock))
advanced.append(rs)
if self.MODEL == "UV-82":
@@ -1201,15 +1279,15 @@
if self.MODEL == "UV-82HP":
# this is an UV-82HP only feature
- rs = RadioSetting("singleptt", "Single PTT",
+ rs = RadioSetting("singleptt", "Single PTT (BTech UV-82HP only)",
RadioSettingValueBoolean(_settings.singleptt))
advanced.append(rs)
if self.MODEL == "UV-82HP":
# this is an UV-82HP only feature
- rs = RadioSetting("tdrch", "Tone Burst Frequency",
- RadioSettingValueList(
- RTONE_LIST, RTONE_LIST[_settings.tdrch]))
+ rs = RadioSetting(
+ "tdrch", "Tone Burst Frequency (BTech UV-82HP only)",
+ RadioSettingValueList(RTONE_LIST, RTONE_LIST[_settings.tdrch]))
advanced.append(rs)
if len(self._mmap.get_packed()) == 0x1808:
1
0