[chirp_users] Importing a CSV file into the memory of an Alinco DJ-G7T
Hi all,
Has anyone had any luck loading a CSV file into an Alinco DJ-G7T. I have organised a list of FM repeaters for 2m/70cm/23cm from the WIA repeater data spreadsheet.
I won't publish it here, but suffice to say, it's more than I want to try and punch in via the keypad. 556 records.
First problem is getting Chirp to even talk to the DJ-G7T. I have no idea what firmware it runs. I went looking in its menus but could not find where this information is shown. All I can say is I bought this from a online retailer (Andrews Communications) in Sydney around 2020.
I am running the latest commit of Chirp: commit 49698a5b21a5a696be7f2121bc3ec8f4605b5b0c on Gentoo Linux AMD64 with Python 3.10.6, wxpython 4.0.7-r2 and wxgtk 3.0.5.1. Gentoo no longer ship Python 2.7. No I do not have a Windows-based PC as I don't use legacy operating systems for production work.
To even get Chirp to talk to the Alinco, I needed to patch it (I think this will preclude me using a pre-made "binary"):
diff --git a/chirp/drivers/alinco.py b/chirp/drivers/alinco.py index 7bfffa39..b3350653 100644 --- a/chirp/drivers/alinco.py +++ b/chirp/drivers/alinco.py @@ -595,7 +595,7 @@ class AlincoDJG7EG(AlincoStyleRadio): TMODES = ["", "??1", "Tone", "TSQL", "TSQL-R", "DTCS"]
# This is a bit of a hack to avoid overwriting _identify() - _model = b"AL~DJ-G7EG" + _model = b"AL~DJ-G7T" _memsize = 0x1a7c0 _range = [(500000, 1300000000)]
I was then able to download an image file from the radio.
If I load up my CSV file, the upload option is greyed out. So clearly I don't directly open the CSV file, I have to "import" it somehow.
If I try to copy the repeaters into the image from the radio, even just one repeater, Chirp segfaults. So clearly it's not a matter of copy and paste.
How does one import a CSV file into an existing radio image?
Hi Stuart, Under "file" is "import", I think alt I is the keyboard shortcut. Browse to your CSV file and let it import. HTH. Glenn
----- Original Message ----- From: "Stuart Longland VK4MSL via chirp_users" chirp_users@intrepid.danplanet.com To: chirp_users@intrepid.danplanet.com Sent: Thursday, January 12, 2023 9:25 PM Subject: [chirp_users] Importing a CSV file into the memory of an AlincoDJ-G7T
Hi all,
Has anyone had any luck loading a CSV file into an Alinco DJ-G7T. I have organised a list of FM repeaters for 2m/70cm/23cm from the WIA repeater data spreadsheet.
I won't publish it here, but suffice to say, it's more than I want to try and punch in via the keypad. 556 records.
First problem is getting Chirp to even talk to the DJ-G7T. I have no idea what firmware it runs. I went looking in its menus but could not find where this information is shown. All I can say is I bought this from a online retailer (Andrews Communications) in Sydney around 2020.
I am running the latest commit of Chirp: commit 49698a5b21a5a696be7f2121bc3ec8f4605b5b0c on Gentoo Linux AMD64 with Python 3.10.6, wxpython 4.0.7-r2 and wxgtk 3.0.5.1. Gentoo no longer ship Python 2.7. No I do not have a Windows-based PC as I don't use legacy operating systems for production work.
To even get Chirp to talk to the Alinco, I needed to patch it (I think this will preclude me using a pre-made "binary"):
diff --git a/chirp/drivers/alinco.py b/chirp/drivers/alinco.py index 7bfffa39..b3350653 100644 --- a/chirp/drivers/alinco.py +++ b/chirp/drivers/alinco.py @@ -595,7 +595,7 @@ class AlincoDJG7EG(AlincoStyleRadio): TMODES = ["", "??1", "Tone", "TSQL", "TSQL-R", "DTCS"]
# This is a bit of a hack to avoid overwriting _identify() - _model = b"AL~DJ-G7EG" + _model = b"AL~DJ-G7T" _memsize = 0x1a7c0 _range = [(500000, 1300000000)]
I was then able to download an image file from the radio.
If I load up my CSV file, the upload option is greyed out. So clearly I don't directly open the CSV file, I have to "import" it somehow.
If I try to copy the repeaters into the image from the radio, even just one repeater, Chirp segfaults. So clearly it's not a matter of copy and paste.
How does one import a CSV file into an existing radio image?
On Thu, 12 Jan 2023 21:30:40 -0600 "K0LNY_Glenn" glenn@ervin.email wrote:
Under "file" is "import", I think alt I is the keyboard shortcut. Browse to your CSV file and let it import.
How far below "file" is "import"? I don't see it. I see "open" -- this lets me open a CSV file, but won't let me load it into a radio.
How far below "file" is "import"? I don't see it. I see "open" -- this lets me open a CSV file, but won't let me load it into a radio.
There is no File->Import in chirp-next. Glenn is thinking about chirp-legacy.
--Dan
To even get Chirp to talk to the Alinco, I needed to patch it (I think this will preclude me using a pre-made "binary"):
diff --git a/chirp/drivers/alinco.py b/chirp/drivers/alinco.py index 7bfffa39..b3350653 100644 --- a/chirp/drivers/alinco.py +++ b/chirp/drivers/alinco.py @@ -595,7 +595,7 @@ class AlincoDJG7EG(AlincoStyleRadio): TMODES = ["", "??1", "Tone", "TSQL", "TSQL-R", "DTCS"]
# This is a bit of a hack to avoid overwriting _identify()
- _model = b"AL~DJ-G7EG"
- _model = b"AL~DJ-G7T" _memsize = 0x1a7c0 _range = [(500000, 1300000000)]
This clearly means that your DJ-G7 is some other flavor than the one for which a driver has been written. I'm guessing the one in the tree is the european version and yours is...something else?
Feel free to open a new feature request for that model to help get it included in chirp as a first class citizen.
If I load up my CSV file, the upload option is greyed out. So clearly I don't directly open the CSV file, I have to "import" it somehow.
You can't upload a CSV to the radio, for sure, as mentioned in the Beginner's Guide:
https://chirp.danplanet.com/projects/chirp/wiki/Beginners_Guide
That also covers how to get memories into your radio's image via copy and paste.
If I try to copy the repeaters into the image from the radio, even just one repeater, Chirp segfaults. So clearly it's not a matter of copy and paste.
Yes, copy and paste is how you do it. A segfault in a python application means something is very wrong, but almost surely with the stack of non-python stuff underneath it (wx, GTK, etc, etc). I've not seen a segault using CHIRP in I can't even remember how long. Last one was absolutely with the GTK/cocoa stuff from the python2 years, as that has always been a bit tipsy. Since copy and paste interacts with your system clipboard, if that's where the segfault happens I'd guess there's some mismatched libraries involved.
Feel free to open a bug and provide more information to help track down the segfault if you'd like.
--Dan
On Thu, 12 Jan 2023 19:38:20 -0800 Dan Smith via chirp_users chirp_users@intrepid.danplanet.com wrote:
If I try to copy the repeaters into the image from the radio, even just one repeater, Chirp segfaults. So clearly it's not a matter of copy and paste.
Yes, copy and paste is how you do it. A segfault in a python application means something is very wrong, but almost surely with the stack of non-python stuff underneath it (wx, GTK, etc, etc).
Okay, so trying again under `gdb`, I got this stack trace.
Thread 1 "python3" received signal SIGSEGV, Segmentation fault. 0x00007ffff7dee14c in ?? () from /usr/lib64/libpython3.10.so.1.0 (gdb) bt #0 0x00007ffff7dee14c in () at /usr/lib64/libpython3.10.so.1.0 #1 0x00007ffff7dee8c3 in _PyObject_GC_New () at /usr/lib64/libpython3.10.so.1.0 #2 0x00007ffff7d0379f in PyMemoryView_FromBuffer () at /usr/lib64/libpython3.10.so.1.0 #3 0x00007ffff659c49d in i_wxPyMakeBuffer(void*, long, bool) () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #4 0x00007ffff6661a38 in () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #5 0x00007ffff7d04454 in () at /usr/lib64/libpython3.10.so.1.0 #6 0x00007ffff7cc7015 in _PyObject_MakeTpCall () at /usr/lib64/libpython3.10.so.1.0 #7 0x00007ffff7c7bc86 in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #8 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #9 0x00007ffff7c780ee in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #10 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #11 0x00007ffff7c7b1bb in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #12 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #13 0x00007ffff7c7b1bb in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #14 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #15 0x00007ffff7c7b1bb in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #16 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #17 0x00007ffff7cc9aa2 in () at /usr/lib64/libpython3.10.so.1.0 #18 0x00007ffff66b05f1 in wxPyCallback::EventThunker(wxEvent&) () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #19 0x00007ffff5af2af6 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #20 0x00007ffff5af2e6a in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #21 0x00007ffff5af2f00 in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #22 0x00007ffff5af2fbb in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #23 0x00007ffff5af3091 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #24 0x00007ffff6705633 in sipwxFrame::ProcessEvent(wxEvent&) () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #25 0x00007ffff60525da in wxWindowBase::TryAfter(wxEvent&) () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0 #26 0x00007ffff67f5583 in sipwxMenuBar::TryAfter(wxEvent&) () --Type <RET> for more, q to quit, c to continue without paging-- at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #27 0x00007ffff67f5443 in sipwxMenuBar::ProcessEvent(wxEvent&) () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #28 0x00007ffff5af2df7 in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #29 0x00007ffff600594a in wxMenuBase::SendEvent(int, int) () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0 #30 0x00007ffff5efe103 in () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0 #31 0x00007ffff4b785cf in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0 #32 0x00007ffff4b8a5f6 in () at /usr/lib64/libgobject-2.0.so.0 #33 0x00007ffff4b90f0c in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0 #34 0x00007ffff4b9105f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0 #35 0x00007ffff52374e0 in () at /usr/lib64/libgtk-3.so.0 #36 0x00007ffff4b785cf in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0 #37 0x00007ffff4b8a5f6 in () at /usr/lib64/libgobject-2.0.so.0 #38 0x00007ffff4b907eb in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0 #39 0x00007ffff4b9105f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0 #40 0x00007ffff4fa9bd8 in gtk_accel_group_activate () at /usr/lib64/libgtk-3.so.0 #41 0x00007ffff4fab4ed in gtk_accel_groups_activate () at /usr/lib64/libgtk-3.so.0 #42 0x00007ffff525abce in gtk_window_activate_key () at /usr/lib64/libgtk-3.so.0 #43 0x00007ffff5e8f3db in () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0 #44 0x00007ffff528b5e7 in () at /usr/lib64/libgtk-3.so.0 #45 0x00007ffff4b785cf in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0 #46 0x00007ffff4b8a5f6 in () at /usr/lib64/libgobject-2.0.so.0 #47 0x00007ffff4b907eb in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0 #48 0x00007ffff4b9105f in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0 #49 0x00007ffff5235324 in () at /usr/lib64/libgtk-3.so.0 #50 0x00007ffff50ea09f in () at /usr/lib64/libgtk-3.so.0 #51 0x00007ffff50eba3d in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0 #52 0x00007ffff4dde565 in () at /usr/lib64/libgdk-3.so.0 #53 0x00007ffff4e120d2 in () at /usr/lib64/libgdk-3.so.0 #54 0x00007ffff4a7ee6b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0 #55 0x00007ffff4a7f118 in () at /usr/lib64/libglib-2.0.so.0 --Type <RET> for more, q to quit, c to continue without paging-- #56 0x00007ffff4a7f403 in g_main_loop_run () at /usr/lib64/libglib-2.0.so.0 #57 0x00007ffff50eac05 in gtk_main () at /usr/lib64/libgtk-3.so.0 #58 0x00007ffff5e7ca75 in wxGUIEventLoop::DoRun() () at /usr/lib64/libwx_gtk3u_core-3.0-gtk3.so.0 #59 0x00007ffff59cf51d in wxEventLoopBase::Run() () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #60 0x00007ffff59972cb in wxAppConsoleBase::MainLoop() () at /usr/lib64/libwx_baseu-3.0-gtk3.so.0 #61 0x00007ffff68a5d81 in wxPyApp::MainLoop() () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #62 0x00007ffff68a5f97 in () at /usr/lib/python3.10/site-packages/wx/_core.cpython-310-x86_64-linux-gnu.so #63 0x00007ffff7d04454 in () at /usr/lib64/libpython3.10.so.1.0 #64 0x00007ffff7cc7015 in _PyObject_MakeTpCall () at /usr/lib64/libpython3.10.so.1.0 #65 0x00007ffff7c7bc86 in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #66 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #67 0x00007ffff7c7b1bb in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #68 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #69 0x00007ffff7c7ab50 in _PyEval_EvalFrameDefault () at /usr/lib64/libpython3.10.so.1.0 #70 0x00007ffff7d8de54 in () at /usr/lib64/libpython3.10.so.1.0 #71 0x00007ffff7d8e010 in PyEval_EvalCode () at /usr/lib64/libpython3.10.so.1.0 #72 0x00007ffff7dcc873 in () at /usr/lib64/libpython3.10.so.1.0 #73 0x00007ffff7dcca97 in () at /usr/lib64/libpython3.10.so.1.0 #74 0x00007ffff7dccb7f in () at /usr/lib64/libpython3.10.so.1.0 #75 0x00007ffff7dcec18 in _PyRun_SimpleFileObject () at /usr/lib64/libpython3.10.so.1.0 #76 0x00007ffff7dcf0db in _PyRun_AnyFileObject () at /usr/lib64/libpython3.10.so.1.0 #77 0x00007ffff7deb93e in Py_RunMain () at /usr/lib64/libpython3.10.so.1.0 #78 0x00007ffff7dec1aa in Py_BytesMain () at /usr/lib64/libpython3.10.so.1.0 #79 0x00007ffff7a3d20c in () at /lib64/libc.so.6 #80 0x00007ffff7a3d2bc in __libc_start_main () at /lib64/libc.so.6 #81 0x0000555555555081 in _start ()
So a wxWidgets call-back tickled Python the wrong way. I'm due for a system update actually so I might try a re-build of the relevant libraries and see how that goes.
participants (3)
-
Dan Smith
-
K0LNY_Glenn
-
Stuart Longland VK4MSL