xyzroe / ZigStarGW-MT

GUI wrapper designed for convenient service work with TI CC1352/CC2538/CC2652 based Zigbee sticks or gateways. Packed into single executable file
GNU General Public License v3.0
270 stars 19 forks source link

Adding Linux instructions #6

Open Nihvel opened 2 years ago

Nihvel commented 2 years ago

It took a few minutes to have it running on Linux (Fedora 35) - I'd share for others and maybe you can feature it in the main Readme.

First, setup your environment:

mkdir zigstar-flash
cd zigstar-flash

Second, download this repo:

git clone --recurse-submodules https://github.com/xyzroe/ZigStarGW-MT.git

Third, create a Virtual Environment:

python -m venv venv-zigbeeflash
source venv-zigbeeflash/bin/activate 
pip install --upgrade pip

Last, You (only) need to install a few Python modules, but for simplicity, install them using the requirements file:

pip install -r ZigStarGW-MT/requirements.txt

You can now execute the program:

python ZigStarGW-MT.py

For SONOFF Zigbee 3.0 USB Dongle Plus: You have to open it, press the boot button and while this is pressed insert the dongle into your usb port. If you don't do it, the error log is Timeout waiting for ACK/NACK after 'Synch (0x55 0x55)'. image

Gallery: image image

xyzroe commented 2 years ago

Thanks for detailed instructions!

Have you tried to run just binary file ?

Add some tricks: You can use git clone --recurse-submodules https://github.com/xyzroe/ZigStarGW-MT.git to download this repo and JelmerT/cc2538-bsl as submodule Also to install all modules you can use pip install -r requirements.txt

About Sonoff - some people reports that they can flash stick without using button. Link 1 and link 2 Can you try this way?

Nihvel commented 2 years ago

Hi! Yes, i tried running the file you linked, I found it in the Releases page https://github.com/xyzroe/ZigStarGW-MT/releases and tried but I remember I didn't succeeded in having it running. I tried it again and I can show you the following:

[jcalleri@nuclear00 Downloads]$ file ZigStarGW-MT 
ZigStarGW-MT: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=16819f06b643201e0d17b4fb6a1f8c68182fc32f, for GNU/Linux 2.6.32, stripped
[jcalleri@nuclear00 Downloads]$ ./ZigStarGW-MT 
Segmentation fault (core dumped)

and also:

Jan 27 10:47:22 nuclear00 kernel: ZigStarGW-MT[307717]: segfault at 43900b8 ip 00007f07467d103d sp 00007ffff8ca4b30 error 4 in libxkbcommon-x11.so.0.0.0[7f07467d0000+4000]
...
Jan 27 10:47:22 nuclear00 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-coredump@9-307734-0 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Jan 27 10:47:22 nuclear00 audit: BPF prog-id=0 op=UNLOAD
Jan 27 10:47:22 nuclear00 audit: BPF prog-id=0 op=UNLOAD
Jan 27 10:47:22 nuclear00 audit: BPF prog-id=0 op=UNLOAD
Jan 27 10:47:22 nuclear00 systemd-coredump[307735]: [🡕] Process 307713 (ZigStarGW-MT) of user 1000 dumped core.

                                                    Found module /home/jcalleri/Downloads/ZigStarGW-MT with build-id: 16819f06b643201e0d17b4fb6a1f8c68182fc32f
                                                    Found module linux-vdso.so.1 with build-id: 5adf6bc52f5c51e10c5d1229124d27eebdae3b02
                                                    Found module ld-linux-x86-64.so.2 with build-id: b43118df1fdb4c0aff150b6f8f926bccdec2a7f0
                                                    Found module libc.so.6 with build-id: 644dac2c66a6e0b32674f0ec71e7431bd0c06a63
                                                    Found module libpthread.so.0 with build-id: 6d78e737da42d543ef1076efa0c727b90d17a940
                                                    Found module libz.so.1 with build-id: 5903f5c355c264403e4e7cdc66779584425ca3b8
                                                    Found module libdl.so.2 with build-id: ba0d0a146dbe192921e9cd581d67b89cb51f9bcf
                                                    Stack trace of thread 307713:
                                                    #0  0x00007f63185de84c __pthread_kill_implementation (libc.so.6 + 0x8f84c)
                                                    #1  0x00007f63185916a6 raise (libc.so.6 + 0x426a6)
                                                    #2  0x0000000000407526 n/a (/home/jcalleri/Downloads/ZigStarGW-MT + 0x7526)
â–‘â–‘ Subject: Process 307713 (ZigStarGW-MT) dumped core
â–‘â–‘ Defined-By: systemd
â–‘â–‘ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
â–‘â–‘ Documentation: man:core(5)
â–‘â–‘ 
â–‘â–‘ Process 307713 (ZigStarGW-MT) crashed and dumped core.
â–‘â–‘ 
â–‘â–‘ This usually indicates a programming error in the crashing program and
â–‘â–‘ should be reported to its vendor as a bug.

And lots, lots of this.

I have honestly no interest at debugging this.. so I went the Python way.

That --recurse-submodules is something I didn't know, thanks! About requirements.txt, you have more modules installed than I thought there were needed. Probably because you were testing the application. Fair enough I'd say. But using those few modules I listed the application manages to run and flash the firmware.

I missed those workaround to flash it without opening! I think this is worth to mention in the README. I'd try what you asked but can't before next week.

Nihvel commented 10 months ago

I'm so happy when I leave things well documented and time after I need them again!

@xyzroe I said I would try those workarounds to flash the FW without opening the enclosure. I didn't lie: "not before next week". Eheheh.

So, they didn't work for me. I tried several times but I just wasn't able. Removing two screws is luckily not that hard here, and I was able to upgrade the Coordinator to the current latest version (20230507).

The steps above still work, I applied your 'git clone' suggestion and used the Python 'venv' module because that comes installed already with Python3.

Thanks for providing this tool!