Skip to content

Instantly share code, notes, and snippets.

@EverythingSmartHome
Last active February 18, 2024 11:51
Show Gist options
  • Save EverythingSmartHome/990f2436608fd347cd20cf0009b5cef4 to your computer and use it in GitHub Desktop.
Save EverythingSmartHome/990f2436608fd347cd20cf0009b5cef4 to your computer and use it in GitHub Desktop.
Zigbee Network Migration
#Check new adapter is found
lsusb
#Check which port new adapter is on
ls -lah /dev/tty*
# Enter Home Assistant container
docker exec -it homeassistant /bin/bash
#Install open-coordinator-backup
pip install zigpy-znp 'git+https://github.com/puddly/bellows@puddly/open-coordinator-backup'
#Start backup process (replace with your device address)
bellows -d socket://YOUR_IP_OR_ADDRESS backup > /config/zigbee-backup.json
#Restore backup to new adatper (replace with your adapter)
python -m zigpy_znp.tools.network_restore /dev/ttyUSB0 -i /config/zigbee-backup.json
#Change to storage directory
cd /config/.storage
#Backup config file
cp core.config_entries core.config_entries.backup
#Edit config file
vi core.config_entries
#Find ZHA using the forward slash key and search for zha. Edit path and radio type as applicable. Press escape and type :x and hit enter to save.
@w0bbl3r
Copy link

w0bbl3r commented Dec 29, 2021

@jbeardon Thank you, same setup same issue - appreciate the helpful fix.

@puddly
Copy link

puddly commented Dec 31, 2021

The "open-coordinator-backup" branch of bellows isn't going to receive any further updates. If you're trying to migrate between a Conbee, a Silicon Labs (EZSP), or a TI adapter, use zigpy/zigpy-cli#2 instead and leave a comment in that PR.

Thanks!

@EverythingSmartHome
Copy link
Author

EverythingSmartHome commented Dec 31, 2021 via email

@hbkhalil
Copy link

hbkhalil commented Jan 6, 2022

Hi,
Is it possible to run this on a raspberypi ? I have tried but I keep getting errors.
Thank you very much for your help.
` ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpq1upvv46
cwd: /tmp/pip-install-2f_5mgxs/aiohttp_4fe5e38aec8d4ea28b56f24f04482e7f
Complete output (95 lines):


  • Accelerated build *

running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-armv7l-3.9
creating build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/init.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/base_protocol.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_fileresponse.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_routedef.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/typedefs.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_response.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/payload.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/locks.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/abc.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_server.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/http_parser.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/http_websocket.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_log.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/connector.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/streams.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_request.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/client_proto.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/helpers.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/client_reqrep.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_exceptions.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/client.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/http_exceptions.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_protocol.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/log.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/payload_streamer.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/hdrs.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_urldispatcher.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/client_ws.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/tracing.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_middlewares.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/tcp_helpers.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/worker.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_app.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/pytest_plugin.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/client_exceptions.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/http.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/multipart.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_ws.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/web_runner.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/cookiejar.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/resolver.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/test_utils.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/formdata.py -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/http_writer.py -> build/lib.linux-armv7l-3.9/aiohttp
running egg_info
warning: no files found matching 'aiohttp' anywhere in distribution
warning: no previously-included files matching '.pyc' found anywhere in distribution
warning: no previously-included files matching '
.pyd' found anywhere in distribution
warning: no previously-included files matching '.so' found anywhere in distribution
warning: no previously-included files matching '
.lib' found anywhere in distribution
warning: no previously-included files matching '.dll' found anywhere in distribution
warning: no previously-included files matching '
.a' found anywhere in distribution
warning: no previously-included files matching '.obj' found anywhere in distribution
warning: no previously-included files found matching 'aiohttp/
.html'
no previously-included directories found matching 'docs/_build'
writing manifest file 'aiohttp.egg-info/SOURCES.txt'
copying aiohttp/_cparser.pxd -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_find_header.c -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_find_header.h -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_find_header.pxd -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_headers.pxi -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_helpers.c -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_helpers.pyi -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_helpers.pyx -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_http_parser.c -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_http_parser.pyx -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_http_writer.c -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_http_writer.pyx -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_websocket.c -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/_websocket.pyx -> build/lib.linux-armv7l-3.9/aiohttp
copying aiohttp/py.typed -> build/lib.linux-armv7l-3.9/aiohttp
creating build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_cparser.pxd.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_find_header.pxd.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_helpers.pyi.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_helpers.pyx.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_http_parser.pyx.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_http_writer.pyx.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/_websocket.pyx.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
copying aiohttp/.hash/hdrs.py.hash -> build/lib.linux-armv7l-3.9/aiohttp/.hash
running build_ext
creating build/temp.linux-armv7l-3.9
creating build/temp.linux-armv7l-3.9/aiohttp
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python3.9 -c aiohttp/_websocket.c -o build/temp.linux-armv7l-3.9/aiohttp/_websocket.o
error: command 'gcc' failed: No such file or directory

ERROR: Failed building wheel for aiohttp
Building wheel for pycryptodome (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-2f_5mgxs/pycryptodome_ccf8fc9bbc78426c9f7747ba0ec9bd1a/setup.py'"'"'; file='"'"'/tmp/pip-install-2f_5mgxs/pycryptodome_ccf8fc9bbc78426c9f7747ba0ec9bd1a/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-rxhsr5k7
cwd: /tmp/pip-install-2f_5mgxs/pycryptodome_ccf8fc9bbc78426c9f7747ba0ec9bd1a/
Complete output (328 lines):
Testing support for clang
Target does not support clang
Testing support for gcc
Target does not support gcc
Testing support for stdint.h header
Target does not support stdint.h header
Testing support for 128-bit integer
Target does not support 128-bit integer
Testing support for cpuid.h header
Target does not support cpuid.h header
Testing support for intrin.h header
Target does not support intrin.h header
Testing support for posix_memalign
Target does not support posix_memalign
Testing support for memalign
Target does not support memalign
Testing support for SSE2(intrin.h)
Target does not support SSE2(intrin.h)
Testing support for SSE2(x86intrin.h)
Target does not support SSE2(x86intrin.h)
Testing support for SSE2(emmintrin.h)
Target does not support SSE2(emmintrin.h)
Warning: compiler does not support AESNI instructions
Warning: compiler does not support CLMUL instructions
running bdist_wheel
running build
running build_py
creating build/lib.linux-armv7l-3.9
creating build/lib.linux-armv7l-3.9/Crypto
copying lib/Crypto/init.py -> build/lib.linux-armv7l-3.9/Crypto
creating build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/init.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/Salsa20.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_EKSBlowfish.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ctr.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ARC4.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_cfb.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/Blowfish.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/AES.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ecb.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ChaCha20_Poly1305.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_openpgp.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/DES.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ARC2.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ofb.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_gcm.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_cbc.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/PKCS1_OAEP.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_siv.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ocb.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/CAST.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/PKCS1_v1_5.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_eax.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/DES3.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ChaCha20.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ccm.py -> build/lib.linux-armv7l-3.9/Crypto/Cipher
creating build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/init.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA512.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/RIPEMD160.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_224.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/HMAC.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA224.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/MD4.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/KMAC128.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_384.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/BLAKE2b.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_256.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/Poly1305.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA256.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/cSHAKE128.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/cSHAKE256.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/MD2.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/KangarooTwelve.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA384.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/CMAC.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHAKE256.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/MD5.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/TupleHash128.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/keccak.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/KMAC256.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_512.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHAKE128.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/TupleHash256.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/BLAKE2s.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA1.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/RIPEMD.py -> build/lib.linux-armv7l-3.9/Crypto/Hash
creating build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/IO/init.py -> build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/IO/_PBES.py -> build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/IO/PKCS8.py -> build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/IO/PEM.py -> build/lib.linux-armv7l-3.9/Crypto/IO
creating build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/init.py -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/ECC.py -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/ElGamal.py -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/DSA.py -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/_openssh.py -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/RSA.py -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
creating build/lib.linux-armv7l-3.9/Crypto/Protocol
copying lib/Crypto/Protocol/init.py -> build/lib.linux-armv7l-3.9/Crypto/Protocol
copying lib/Crypto/Protocol/SecretSharing.py -> build/lib.linux-armv7l-3.9/Crypto/Protocol
copying lib/Crypto/Protocol/KDF.py -> build/lib.linux-armv7l-3.9/Crypto/Protocol
creating build/lib.linux-armv7l-3.9/Crypto/Random
copying lib/Crypto/Random/init.py -> build/lib.linux-armv7l-3.9/Crypto/Random
copying lib/Crypto/Random/random.py -> build/lib.linux-armv7l-3.9/Crypto/Random
creating build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/init.py -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/pkcs1_15.py -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/DSS.py -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/PKCS1_PSS.py -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/PKCS1_v1_5.py -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/pss.py -> build/lib.linux-armv7l-3.9/Crypto/Signature
creating build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/init.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/_cpu_features.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/Counter.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/py3compat.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/strxor.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/RFC1751.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/_raw_api.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/asn1.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/Padding.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/_file_system.py -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/number.py -> build/lib.linux-armv7l-3.9/Crypto/Util
creating build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/init.py -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerGMP.py -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/Numbers.py -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/Primality.py -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerNative.py -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerBase.py -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerCustom.py -> build/lib.linux-armv7l-3.9/Crypto/Math
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest
copying lib/Crypto/SelfTest/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest
copying lib/Crypto/SelfTest/main.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest
copying lib/Crypto/SelfTest/st_common.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest
copying lib/Crypto/SelfTest/loader.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_ChaCha20_Poly1305.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_DES3.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_GCM.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_CAST.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_DES.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_EAX.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_SIV.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_ARC4.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_Blowfish.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_CBC.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_Salsa20.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_ARC2.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_ChaCha20.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/common.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_AES.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_OCB.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_OFB.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_OpenPGP.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_CCM.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_CTR.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_pkcs1_oaep.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
copying lib/Crypto/SelfTest/Cipher/test_CFB.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Cipher
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA384.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA3_224.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_KangarooTwelve.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_KMAC.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHAKE.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA3_512.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_MD5.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_CMAC.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_keccak.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_MD2.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA3_256.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA3_384.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA512.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_HMAC.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA224.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_cSHAKE.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_MD4.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/common.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_RIPEMD160.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA1.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_SHA256.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_BLAKE2.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_Poly1305.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
copying lib/Crypto/SelfTest/Hash/test_TupleHash.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Hash
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/IO
copying lib/Crypto/SelfTest/IO/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/IO
copying lib/Crypto/SelfTest/IO/test_PKCS8.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/IO
copying lib/Crypto/SelfTest/IO/test_PBES.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/IO
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Protocol
copying lib/Crypto/SelfTest/Protocol/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Protocol
copying lib/Crypto/SelfTest/Protocol/test_SecretSharing.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Protocol
copying lib/Crypto/SelfTest/Protocol/test_KDF.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Protocol
copying lib/Crypto/SelfTest/Protocol/test_rfc1751.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Protocol
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_import_DSA.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_ElGamal.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_RSA.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_DSA.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_import_RSA.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_ECC.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
copying lib/Crypto/SelfTest/PublicKey/test_import_ECC.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/PublicKey
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Random
copying lib/Crypto/SelfTest/Random/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Random
copying lib/Crypto/SelfTest/Random/test_random.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Random
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Signature
copying lib/Crypto/SelfTest/Signature/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Signature
copying lib/Crypto/SelfTest/Signature/test_dss.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Signature
copying lib/Crypto/SelfTest/Signature/test_pss.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Signature
copying lib/Crypto/SelfTest/Signature/test_pkcs1_15.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Signature
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/test_asn1.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/test_number.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/test_strxor.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/test_Padding.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/test_rfc1751.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
copying lib/Crypto/SelfTest/Util/test_Counter.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Util
creating build/lib.linux-armv7l-3.9/Crypto/SelfTest/Math
copying lib/Crypto/SelfTest/Math/init.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Math
copying lib/Crypto/SelfTest/Math/test_Numbers.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Math
copying lib/Crypto/SelfTest/Math/test_modexp.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Math
copying lib/Crypto/SelfTest/Math/test_Primality.py -> build/lib.linux-armv7l-3.9/Crypto/SelfTest/Math
copying lib/Crypto/py.typed -> build/lib.linux-armv7l-3.9/Crypto
copying lib/Crypto/init.pyi -> build/lib.linux-armv7l-3.9/Crypto
copying lib/Crypto/Cipher/PKCS1_v1_5.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_cfb.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/DES.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_siv.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ARC4.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_EKSBlowfish.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/Blowfish.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ecb.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/init.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ocb.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/CAST.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ctr.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/Salsa20.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ofb.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/PKCS1_OAEP.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/AES.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ChaCha20.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/DES3.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_gcm.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_eax.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_cbc.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_ccm.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ARC2.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/_mode_openpgp.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Cipher/ChaCha20_Poly1305.pyi -> build/lib.linux-armv7l-3.9/Crypto/Cipher
copying lib/Crypto/Hash/MD2.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/cSHAKE128.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/BLAKE2b.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHAKE256.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/KMAC128.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/RIPEMD.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_224.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/RIPEMD160.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/KangarooTwelve.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/MD5.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA256.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA1.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/HMAC.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/init.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_384.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHAKE128.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA384.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/KMAC256.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA512.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/Poly1305.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_512.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA3_256.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/CMAC.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/BLAKE2s.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/SHA224.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/cSHAKE256.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/TupleHash128.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/keccak.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/MD4.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/Hash/TupleHash256.pyi -> build/lib.linux-armv7l-3.9/Crypto/Hash
copying lib/Crypto/IO/_PBES.pyi -> build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/IO/PKCS8.pyi -> build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/IO/PEM.pyi -> build/lib.linux-armv7l-3.9/Crypto/IO
copying lib/Crypto/PublicKey/RSA.pyi -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/ElGamal.pyi -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/ECC.pyi -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/init.pyi -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/DSA.pyi -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/PublicKey/_openssh.pyi -> build/lib.linux-armv7l-3.9/Crypto/PublicKey
copying lib/Crypto/Protocol/init.pyi -> build/lib.linux-armv7l-3.9/Crypto/Protocol
copying lib/Crypto/Protocol/KDF.pyi -> build/lib.linux-armv7l-3.9/Crypto/Protocol
copying lib/Crypto/Protocol/SecretSharing.pyi -> build/lib.linux-armv7l-3.9/Crypto/Protocol
copying lib/Crypto/Random/init.pyi -> build/lib.linux-armv7l-3.9/Crypto/Random
copying lib/Crypto/Random/random.pyi -> build/lib.linux-armv7l-3.9/Crypto/Random
copying lib/Crypto/Signature/PKCS1_v1_5.pyi -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/pkcs1_15.pyi -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/PKCS1_PSS.pyi -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/DSS.pyi -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Signature/pss.pyi -> build/lib.linux-armv7l-3.9/Crypto/Signature
copying lib/Crypto/Util/RFC1751.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/_cpu_features.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/py3compat.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/Counter.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/_raw_api.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/_file_system.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/Padding.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/asn1.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/number.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Util/strxor.pyi -> build/lib.linux-armv7l-3.9/Crypto/Util
copying lib/Crypto/Math/Numbers.pyi -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/Primality.pyi -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerGMP.pyi -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerNative.pyi -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerCustom.pyi -> build/lib.linux-armv7l-3.9/Crypto/Math
copying lib/Crypto/Math/_IntegerBase.pyi -> build/lib.linux-armv7l-3.9/Crypto/Math
running build_ext
building 'Crypto.Hash._MD2' extension
creating build/temp.linux-armv7l-3.9
creating build/temp.linux-armv7l-3.9/src
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -DPYCRYPTO_LITTLE_ENDIAN -DSYS_BITS=32 -DLTC_NO_ASM -Isrc/ -I/usr/include/python3.9 -c src/MD2.c -o build/temp.linux-armv7l-3.9/src/MD2.o
error: command 'gcc' failed: No such file or directory

ERROR: Failed building wheel for pycryptodome
Running setup.py clean for pycryptodome
Building wheel for frozenlist (pyproject.toml) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpml8fcjgl
cwd: /tmp/pip-install-2f_5mgxs/frozenlist_9fbd1664849b4c25be0f700ceefc2dba
Complete output (30 lines):


  • Accellerated build *

running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-armv7l-3.9
creating build/lib.linux-armv7l-3.9/frozenlist
copying frozenlist/init.py -> build/lib.linux-armv7l-3.9/frozenlist
running egg_info
warning: no previously-included files matching '.pyc' found anywhere in distribution
warning: no previously-included files matching '
.pyd' found anywhere in distribution
warning: no previously-included files matching '.so' found anywhere in distribution
warning: no previously-included files matching '
.lib' found anywhere in distribution
warning: no previously-included files matching '.dll' found anywhere in distribution
warning: no previously-included files matching '
.a' found anywhere in distribution
warning: no previously-included files matching '.obj' found anywhere in distribution
warning: no previously-included files found matching 'frozenlist/
.html'
no previously-included directories found matching 'docs/_build'
writing manifest file 'frozenlist.egg-info/SOURCES.txt'
copying frozenlist/init.pyi -> build/lib.linux-armv7l-3.9/frozenlist
copying frozenlist/_frozenlist.c -> build/lib.linux-armv7l-3.9/frozenlist
copying frozenlist/_frozenlist.pyx -> build/lib.linux-armv7l-3.9/frozenlist
copying frozenlist/py.typed -> build/lib.linux-armv7l-3.9/frozenlist
running build_ext
creating build/temp.linux-armv7l-3.9
creating build/temp.linux-armv7l-3.9/frozenlist
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python3.9 -c frozenlist/_frozenlist.c -o build/temp.linux-armv7l-3.9/frozenlist/_frozenlist.o
error: command 'gcc' failed: No such file or directory

ERROR: Failed building wheel for frozenlist
Building wheel for multidict (pyproject.toml) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpwekpyo2i
cwd: /tmp/pip-install-2f_5mgxs/multidict_d8b95f7531b54b77bd87098339c271c9
Complete output (37 lines):


  • Accelerated build *

running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-armv7l-3.9
creating build/lib.linux-armv7l-3.9/multidict
copying multidict/init.py -> build/lib.linux-armv7l-3.9/multidict
copying multidict/_compat.py -> build/lib.linux-armv7l-3.9/multidict
copying multidict/_multidict_py.py -> build/lib.linux-armv7l-3.9/multidict
copying multidict/_multidict_base.py -> build/lib.linux-armv7l-3.9/multidict
copying multidict/_abc.py -> build/lib.linux-armv7l-3.9/multidict
running egg_info
warning: no previously-included files matching '.pyc' found anywhere in distribution
warning: no previously-included files found matching 'multidict/_multidict.html'
warning: no previously-included files found matching 'multidict/
.so'
warning: no previously-included files found matching 'multidict/.pyd'
warning: no previously-included files found matching 'multidict/
.pyd'
no previously-included directories found matching 'docs/_build'
writing manifest file 'multidict.egg-info/SOURCES.txt'
copying multidict/init.pyi -> build/lib.linux-armv7l-3.9/multidict
copying multidict/_multidict.c -> build/lib.linux-armv7l-3.9/multidict
copying multidict/py.typed -> build/lib.linux-armv7l-3.9/multidict
creating build/lib.linux-armv7l-3.9/multidict/_multilib
copying multidict/_multilib/defs.h -> build/lib.linux-armv7l-3.9/multidict/_multilib
copying multidict/_multilib/dict.h -> build/lib.linux-armv7l-3.9/multidict/_multilib
copying multidict/_multilib/istr.h -> build/lib.linux-armv7l-3.9/multidict/_multilib
copying multidict/_multilib/iter.h -> build/lib.linux-armv7l-3.9/multidict/_multilib
copying multidict/_multilib/pair_list.h -> build/lib.linux-armv7l-3.9/multidict/_multilib
copying multidict/_multilib/views.h -> build/lib.linux-armv7l-3.9/multidict/_multilib
running build_ext
creating build/temp.linux-armv7l-3.9
creating build/temp.linux-armv7l-3.9/multidict
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python3.9 -c multidict/_multidict.c -o build/temp.linux-armv7l-3.9/multidict/_multidict.o -O2 -std=c99 -Wall -Wsign-compare -Wconversion -fno-strict-aliasing -pedantic
error: command 'gcc' failed: No such file or directory

ERROR: Failed building wheel for multidict
Building wheel for yarl (pyproject.toml) ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmpjbm3xaak
cwd: /tmp/pip-install-2f_5mgxs/yarl_c90b2cebcf13471eae21feff6ae30517
Complete output (31 lines):


  • Accelerated build *

running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-armv7l-3.9
creating build/lib.linux-armv7l-3.9/yarl
copying yarl/init.py -> build/lib.linux-armv7l-3.9/yarl
copying yarl/_url.py -> build/lib.linux-armv7l-3.9/yarl
copying yarl/_quoting_py.py -> build/lib.linux-armv7l-3.9/yarl
copying yarl/_quoting.py -> build/lib.linux-armv7l-3.9/yarl
running egg_info
warning: no previously-included files matching '.pyc' found anywhere in distribution
warning: no previously-included files matching '
.cache' found anywhere in distribution
warning: no previously-included files found matching 'yarl/.html'
warning: no previously-included files found matching 'yarl/
.so'
warning: no previously-included files found matching 'yarl/*.pyd'
no previously-included directories found matching 'docs/_build'
writing manifest file 'yarl.egg-info/SOURCES.txt'
copying yarl/init.pyi -> build/lib.linux-armv7l-3.9/yarl
copying yarl/_quoting_c.c -> build/lib.linux-armv7l-3.9/yarl
copying yarl/_quoting_c.pyi -> build/lib.linux-armv7l-3.9/yarl
copying yarl/_quoting_c.pyx -> build/lib.linux-armv7l-3.9/yarl
copying yarl/py.typed -> build/lib.linux-armv7l-3.9/yarl
running build_ext
creating build/temp.linux-armv7l-3.9
creating build/temp.linux-armv7l-3.9/yarl
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python3.9 -c yarl/_quoting_c.c -o build/temp.linux-armv7l-3.9/yarl/_quoting_c.o
error: command 'gcc' failed: No such file or directory

ERROR: Failed building wheel for yarl
Successfully built bellows
Failed to build aiohttp pycryptodome frozenlist multidict yarl
ERROR: Could not build wheels for aiohttp, frozenlist, multidict, yarl, which is required to install pyproject.toml-based projects
`

@puddly
Copy link

puddly commented Jan 6, 2022

error: command 'gcc' failed: No such file or directory

You need a functional build environment. I'm not sure what distro you're running on your Pi but you likely need to install build-essential or similar:

$ sudo apt-get install build-essential python3-dev

@EverythingSmartHome
Copy link
Author

EverythingSmartHome commented Jan 6, 2022 via email

@hbkhalil
Copy link

hbkhalil commented Jan 6, 2022 via email

@puddly
Copy link

puddly commented Jan 6, 2022

It's a lot easier to do this outside of Home Assistant OS (since you have access to a full operating system instead of a stripped down Docker container) but you can access the Home Assistant OS container and set up the virtual environment in there. Here are some instructions for how to do that: https://github.com/zigpy/zigpy-znp/blob/dev/TOOLS.md#in-home-assistant-os

@hbkhalil
Copy link

hbkhalil commented Jan 6, 2022 via email

@hbkhalil
Copy link

hbkhalil commented Jan 9, 2022

Hi there,
I am getting this error
`Traceback (most recent call last):
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 492, in wait_for
fut.result()
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/local/bin/bellows", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1128, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1053, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line 754, in invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/bellows/cli/util.py", line 39, in inner
loop.run_until_complete(f(*args, **kwargs))
File "/usr/local/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
return future.result()
File "/usr/local/lib/python3.9/site-packages/bellows/cli/backup.py", line 83, in backup
ezsp = await util.setup(ctx.obj["device"], ctx.obj["baudrate"], _print_cb)
File "/usr/local/lib/python3.9/site-packages/bellows/cli/util.py", line 118, in setup
await s.reset()
File "/usr/local/lib/python3.9/site-packages/bellows/ezsp/init.py", line 94, in reset
await self._gw.reset()
File "/usr/local/lib/python3.9/site-packages/bellows/uart.py", line 223, in reset
return await asyncio.wait_for(self._reset_future, timeout=RESET_TIMEOUT)
File "/usr/local/lib/python3.9/asyncio/tasks.py", line 494, in wait_for
raise exceptions.TimeoutError() from exc
asyncio.exceptions.TimeoutError
^CException ignored in: <module 'threading' from '/usr/local/lib/python3.9/threading.py'>
Traceback (most recent call last):
File "/usr/local/lib/python3.9/threading.py", line 1435, in _shutdown
atexit_call()
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 31, in _python_exit
t.join()
File "/usr/local/lib/python3.9/threading.py", line 1053, in join
self._wait_for_tstate_lock()
File "/usr/local/lib/python3.9/threading.py", line 1069, in _wait_for_tstate_lock
elif lock.acquire(block, timeout):
`
I am unsure of what is happenning.
Thank you very much for your help.

@puddly
Copy link

puddly commented Jan 9, 2022

What adapters are you trying to migrate between and what exact commands are you running?

@hbkhalil
Copy link

hbkhalil commented Jan 9, 2022 via email

@puddly
Copy link

puddly commented Jan 9, 2022

Right, but what exact commands are you running?

Your traceback includes references to bellows, which handles communication with EZSP/Silicon Labs radios. Neither of the two commands to migrate between your two sticks should be using the ezsp radio type. They should all be znp.

@hbkhalil
Copy link

hbkhalil commented Jan 9, 2022 via email

@shahms
Copy link

shahms commented Jan 9, 2022

I was able to successfully migrate from a HUSBZB-1 stick to CC2652P-based adapter using a hybrid of the steps described here and in zigpy/zigpy-cli#2

I did so using a second computer to perform the backup/restore to avoid too much invasive surgery on my HA install. Specifically, I:

  1. Disabled the ZHA integration
  2. Removed the HUSBZB-1 stick and put it into a second computer.
  3. Performed the backup from zigpy/zigpy-cli#2
  4. Put the new controller stick in the computer
  5. Performed the restore steps from zigpy/zigpy-cli#2
  6. Attached the new stick to my HA Raspberry Pi
  7. Edited core.config_entries to change the device path and (importantly!) the baud rate. The HUSBZB-1 used 57600 while the new stick requires 115200
  8. Restart HA
  9. Re-enable the ZHA integration
  10. Edit core.device_registry and core.entity_registry to re-enable the disabled devices and entities (as others have noted)
  11. Restart HA

There were a number of false-starts after 7. I originally didn't edit the baud rate which lead to timeouts trying to re-enable the integration. After fixing that and restarting again, all of the devices/entities were disabled (as others have noted). After manually re-enabling them and restarting again everything seems to be working! I'm not sure if one of those missteps are what lead to the devices/entities being disabled or what.

As to my rationale: while I have fairly few ZigBee devices, one of them is a notoriously finicky ceiling fan which is having occasional drop outs and which I'm hoping the new adapter will help with. It's also incredibly obnoxious to re-pair, so being able to avoid that is worth almost any amount of other work.

@sprynm
Copy link

sprynm commented Jan 9, 2022

ugg, stuck at "-bash: docker: command not found"

EverythingSmartHome commented on Dec 9, 2021
@tof92130 Firstly the command you typed isn't correct (typo), but secondly you must type "login" first on the command line if you are doing it from the terminal. You can also disable protected mode on the SSH add-on instead and do it that way.

Unsure what context "login" has here but all my credentials fail (root, admin,...).

SSH addon doesn't appear to have an option to "disable protection mode"

tof92130 commented on Dec 10, 2021
Ok, I was not using the good add-on, it needs to use ssh & Web Terminal to access docker command

I have the "Terminal & SSH" addon (only one I could find in a search). From here: https://github.com/home-assistant/addons/tree/master/ssh

Is there a different one on a different repo I should use?

Installation Type | Home Assistant OS
Development | false
Supervisor | true
Supervisor Version | supervisor-2021.12.2
Docker | true
Docker Version | 20.10.9
User | root
Virtual Environment | false
Python Version | 3.9.7
Operating System Family | Linux
Operating System Version | 5.10.63-v8

@puddly
Copy link

puddly commented Jan 9, 2022

SSH addon doesn't appear to have an option to "disable protection mode"

There are two SSH addons and you're probably using the not-so-useful one. Take a look at https://github.com/zigpy/zigpy-znp/blob/dev/TOOLS.md#in-home-assistant-os.

@satyajitmishra93
Copy link

I am specifically stuck at the part where it creates the backup.
I entered the following command;
bellows -d /dev/ttyUSB0 backup > /config/zigbee-backup.json
Then I get an error called; asyncio.exceptions.CancelledError
Can someone please tell me what I am doing wrong?

@Hoekeren
Copy link

Hoekeren commented Feb 7, 2022

Same problem here https://gist.github.com/EverythingSmartHome/990f2436608fd347cd20cf0009b5cef4?permalink_comment_id=4023749#gistcomment-4023749

bellows -d socket:/dev/ttyACM0 backup > /config/zigbee-backup.json

this is the stick i try to backup "/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B00193B17CD-if00"

@anoril1979
Copy link

anoril1979 commented Feb 21, 2022

Hi!
Many thanks for the video and explanation; I'm trying to migrate from a Sonoff basic to the Sonoff 3.0 Plus, as depicted in the video, and was afraid to lost all my data in the change.

Actually, I got an issue with the export. Note that I'm not using Docker but HA Core on a Synology NAS. ZigPy and Bellows were kind-of hard to install correctly but seem to work. (pip install ... on project https://github.com/zigpy/bellows 0.29.0)
Now, I backup my Sonoff ZBBridge using the bellows command and I got a json file as expected. But it looks inconsistent and fails the check against json validation: jsonschema.exceptions.ValidationError: 'metadata' is a required property
How this can happen? Does Bellows can export in a wrong format (I read the json file and see that there is a lot of missing "required" keys, like "devices", "coordinator_ieee", "channel"...

I then used python3 -m zigpy_znp.tools.network_backup --output /volume1/BackUp/zigbee-backup2.json socket://192.168.1.41:8888 to give it a try but I ended with a TimeoutError...

@balcanuc
Copy link

The solution described here is not working anymore. Please consider following instructions from zigpy/zigpy-cli#2 instead

There was an intentional change that break functionality.

@anoril1979
Copy link

anoril1979 commented Feb 21, 2022

Thanks for the update.
I tried following steps depicted by @shahms but I did not manage to run zigpy.

For instance, if I go pip install zigpy-cli, it issues a ERROR: No matching distribution found for zigpy-cli error.
I downloaded zigpy-cli archive, dezipped, changed the files with the ones from the PR, then requested an install. Python told me I must have PySQLite3 and provided the command (pip install pysqlite3-binary)...
Which fails with ERROR: No matching distribution found for pysqlite3-binary... I tried with pip install pysqlite3 which worked but then zigpy -vv radio ezsp socket://192.168.1.41:8888 backup /volume1/BackUp/zigbee-backup2.json still issues an error about sqlite3 version...

I'm cursed!

@anoril1979
Copy link

I installed Python on Windows platform with all the components. SQLite3 is OK, ZigPy is ok, etc. but running zigpy command returns a missing zigpy-cli module, while this exact one is listed as installed by pip list command.
I'll wait for this to be ironed before to migrate my zigtbee gateway :P

@10165joe
Copy link

Hi, I get the following error when trying to install bellows branch
This branch is obsolete! Please test zigpy/zigpy-cli#2 instead
however if i try this, i get...
fatal: repository 'zigpy/zigpy-cli#2' not found

any help would be greatly appreciated.. thanks :-)

@Aham330
Copy link

Aham330 commented Apr 13, 2022

Hi @10165joe i believe I used this video to
update my Sonoff 3.0 dongle
Plus.

https://youtu.be/iCE5Z43EKpk

Then used the zha_toolkit through HACS to update my Zigbee network. Rewrote and renamed some devices (needed to be done anyway) also
Looked at the automations and changed some of those. All in all about 2 hours. Having about 30 devices.

Overall very happy because the Sonoff seems much more stable than the cc2531 that I had.

@10165joe
Copy link

Hi @10165joe i believe I used this video to update my Sonoff 3.0 dongle Plus.

https://youtu.be/iCE5Z43EKpk

Then used the zha_toolkit through HACS to update my Zigbee network. Rewrote and renamed some devices (needed to be done anyway) also Looked at the automations and changed some of those. All in all about 2 hours. Having about 30 devices.

Overall very happy because the Sonoff seems much more stable than the cc2531 that I had.

Perfect! thanks

@plankto
Copy link

plankto commented Jun 26, 2022

I just went through this and got stuck with the obsolete branch, switching out the following commands worked for me.

#Install open-coordinator-backup
pip install 'zigpy>=0.47.0' 'zigpy-znp>=0.8.0' 'zigpy-deconz>=0.17.0' git+https://github.com/puddly/zigpy-cli.git@puddly/zigpy-radio-api git+https://github.com/puddly/bellows.git@puddly/zigpy-radio-api

#Start backup process (replace with your device address)
zigpy -vv radio ezsp socket://YOUR_IP_OR_ADDRESS backup /config/zigbee-backup.json

#Restore backup to new adatper (replace with your adapter)
zigpy -vv radio znp /dev/ttyUSB0 restore /config/zigbee-backup.json

@ernst77
Copy link

ernst77 commented Jul 19, 2022

I just went through this and got stuck with the obsolete branch, switching out the following commands worked for me.

#Install open-coordinator-backup pip install 'zigpy>=0.47.0' 'zigpy-znp>=0.8.0' 'zigpy-deconz>=0.17.0' git+https://github.com/puddly/zigpy-cli.git@puddly/zigpy-radio-api git+https://github.com/puddly/bellows.git@puddly/zigpy-radio-api

#Start backup process (replace with your device address) zigpy -vv radio ezsp socket://YOUR_IP_OR_ADDRESS backup /config/zigbee-backup.json

#Restore backup to new adatper (replace with your adapter) zigpy -vv radio znp /dev/ttyUSB0 restore /config/zigbee-backup.json

this does not work either...

@sorenjacobi
Copy link

sorenjacobi commented Oct 9, 2022

This worked for me:

pip install 'zigpy>=0.47.0' 'zigpy-znp>=0.8.0' 'zigpy-deconz>=0.17.0' git+https://github.com/puddly/zigpy-cli.git@puddly/zigpy-radio-api

python -m zigpy_znp.tools.network_backup /dev/ttyUSB0 -o /config/zigbee-backup.json

Read more here: https://github.com/zigpy/zigpy-znp/blob/dev/TOOLS.md#backup-and-restore

@puddly
Copy link

puddly commented Oct 9, 2022

Please use ZHA's migration interface, there's no need to use the command line tools. If you still want to do it over the command line, use zigpy-cli: https://github.com/zigpy/zigpy-cli#network-backup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment