# Install Electrum with support for ColdCard, Trezor and Ledger connected to your own Electrum Personal Server * make sure the system is up-to-date ``` sudo apt-get update sudo apt-get upgrade sudo apt install git-all ``` ## download, verify, install Electrum https://electrum.org/#download * Download package: ` $ wget https://download.electrum.org/3.3.4/Electrum-3.3.4.tar.gz` * Verify Electrum's downloaded source code At this stage, we are ready to verify Electrum's source code. The source code is signed by Thomas Voegtlin (https://electrum.org). Let's import his public key: `$ gpg --keyserver pool.sks-keyservers.net --recv-keys 2BD5824B7F9470E6` ``` gpg: key 2BD5824B7F9470E6: public key "Thomas Voegtlin (https://electrum.org) " imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 ``` * Confirm a correct key import and proceed to verify the downloaded file with the help of the signature file: `$ wget https://download.electrum.org/3.3.4/Electrum-3.3.4.tar.gz.asc` `$ gpg --verify Electrum-3.3.4.tar.gz.asc` ``` gpg: Signature made Tue 12 Dec 2017 17:06:09 AEDT gpg: using RSA key 2BD5824B7F9470E6 gpg: Good signature from "Thomas Voegtlin (https://electrum.org) " [unknown] gpg: aka "ThomasV " [unknown] gpg: aka "Thomas Voegtlin " [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 6694 D8DE 7BE8 EE56 31BE D950 2BD5 824B 7F94 70E6 ``` * Note gpg: Good signature on Line 3. All seems to be in order! * Install Electrum To install Electrum bitcoin wallet, we first need to preform an installation of all prerequisites: Install dependencies: `sudo apt-get install python3-setuptools python3-pyqt5 python3-pip` Install Electrum using the command: `python3 -m pip install --user Electrum-3.3.4.tar.gz[fast]` `cd Electrum-3.3.4` ## (optional) zbar to read QR codes with the camera `sudo apt-get install zbar-tools` ## (optional) install and activate a virtual environment `apt-get install python3-venv` `python3 -m venv venv` `source venv/bin/activate` --- ## ColdCard for Electrum ``` sudo apt-get install python-dev libusb-1.0-0-dev libudev-dev sudo pip install --upgrade setuptools sudo pip install hidapi pyqt5 "ckcc-protocol[cli]" ``` add the udev rules ``` cd /etc/udev/rules.d/ sudo wget https://raw.githubusercontent.com/Coldcard/ckcc-protocol/master/51-coinkite.rules sudo udevadm control --reload-rules && sudo udevadm trigger ``` ## Trezor for Electrum ``` sudo apt-get install python3-dev python3-pip cython3 libusb-1.0-0-dev libudev-dev sudo pip3 install --upgrade setuptools pip3 install trezor sudo pip3 install trezor[hidapi] ``` Add the udev rules: ``` cd /etc/udev/rules.d sudo wget https://raw.githubusercontent.com/trezor/trezor-common/master/udev/51-trezor.rules` sudo cp udev/*.rules /etc/udev/rules.d/ sudo udevadm trigger sudo udevadm control -- reload-rules sudo groupadd plugdev sudo usermod -aG plugdev `whoami` ``` ## Ledger for Electrum ``` apt-get install libudev-dev libusb-1.0-0-dev ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so sudo pip3 install btchip-python wget -q -O - https://raw.githubusercontent.com/LedgerHQ/udev-rules/master/add_udev_rules.sh | sudo bash ``` https://support.ledger.com/hc/en-us/articles/115005165269-What-if-Ledger-Wallet-is-not-recognized-on-Linux- ## Documentation on how to add udev rules in Linux: https://github.com/bitcoin-core/HWI/tree/master/udev https://github.com/spesmilo/electrum-docs/blob/master/hardware-linux.rst --- ## Electrum Personal Server Follow Stadicus`s guide: https://github.com/Stadicus/RaspiBolt/blob/master/raspibolt_64_electrum.md some permissions I needed to fix: >ssh admin@Raspibolt >sudo su - bitcoin >ls -la `drwx------ 6 bitcoin bitcoin 4096 Jan 2 23:55 .local` >chmod 755 .local `drwxr-xr-x 6 bitcoin bitcoin 4096 Jan 2 23:55 .local` monitor the log: >tail -f /tmp/electrumpersonalserver.log restrict Electrum to use your own EPS, point it to the LAN IP of your Raspibolt >python3 run_electrum --oneserver --server [RaspiBolt.IP]:50002:s