diff --git a/dev-python/hwi/Manifest b/dev-python/hwi/Manifest
new file mode 100644
index 0000000000..a83784924d
--- /dev/null
+++ b/dev-python/hwi/Manifest
@@ -0,0 +1 @@
+DIST hwi-1.1.2.tar.gz 191620 BLAKE2B f5c7001efa4dfe73b3641ff17dcc8e004b16102eabbee8f2b777279d193d53d19aad11ece0aaa3b885a6f72009de2b7a407e625011e6c4e59cca8c227635772f SHA512 bde36a4fca4f36abef57f5557f38bd1957fd13362f14f9e2e1f0b86c20f6669d0fe0f2763799922250eaf3c936cd87bcdae833b90424f136be66ddcb098b55d1
diff --git a/dev-python/hwi/hwi-1.1.2.ebuild b/dev-python/hwi/hwi-1.1.2.ebuild
new file mode 100644
index 0000000000..afe011ee55
--- /dev/null
+++ b/dev-python/hwi/hwi-1.1.2.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7,8} )
+DISTUTILS_USE_SETUPTOOLS=rdepend
+
+inherit distutils-r1 udev
+
+DESCRIPTION="Library and command line tool for interacting with hardware wallets"
+HOMEPAGE="https://github.com/bitcoin-core/HWI"
+
+MY_PN="HWI"
+MY_P="${MY_PN}-${PV}"
+SRC_URI="https://github.com/bitcoin-core/${MY_PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="udev doc"
+
+BDEPEND=""
+RDEPEND="
+ >=dev-python/ecdsa-0.13.0[${PYTHON_USEDEP}]
+ >=dev-python/hidapi-0.7.99[${PYTHON_USEDEP}]
+ >=dev-python/libusb1-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/mnemonic-0.18.0[${PYTHON_USEDEP}]
+ >=dev-python/pyaes-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-3.7.4.1[${PYTHON_USEDEP}]"
+
+distutils_enable_tests unittest
+
+S="${WORKDIR}/${MY_P}"
+
+python_prepare_all() {
+ # remove upper bounds on dependencies from setup.py file
+ sed 's/,<[0-9.]\+//' -i setup.py || die "sed failed"
+
+ pushd test
+ # remove tests that require hardware emulation
+ rm test_coldcard.py test_device.py test_digitalbitbox.py test_keepkey.py test_ledger.py test_trezor.py
+ # remove udev tests because it expects the rules are installed in the libs folder
+ rm test_udevrules.py
+ popd
+
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ use udev && udev_dorules hwilib/udev/*.rules
+ use doc && dodoc -r docs
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/hwi/metadata.xml b/dev-python/hwi/metadata.xml
new file mode 100644
index 0000000000..b63e8de308
--- /dev/null
+++ b/dev-python/hwi/metadata.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ a.zuber@gmx.ch
+ Andreas Zuber
+
+
+ bitcoin-core/HWI
+
+
diff --git a/dev-python/libusb1/Manifest b/dev-python/libusb1/Manifest
new file mode 100644
index 0000000000..fc0deac3a9
--- /dev/null
+++ b/dev-python/libusb1/Manifest
@@ -0,0 +1 @@
+DIST libusb1-1.8.tar.gz 78282 BLAKE2B 85a7a74ec13fd290053f9c6a99d6174e8b2d3b8b49067ee36cb90757488cb6a238c30327a27e7af3581ee9eace33d9ececb47c4e0ecb85f27dd6c1d91867f5c3 SHA512 756d091dbae089d719f8c2b21419fb850b00547152c457501dc8e3296ece10418a6a255f9eece25b05eb5e039c892f2f31b52f3b7ca8668f8bd152ebfb8a90eb
diff --git a/dev-python/libusb1/libusb1-1.8.ebuild b/dev-python/libusb1/libusb1-1.8.ebuild
new file mode 100644
index 0000000000..3886b4fb18
--- /dev/null
+++ b/dev-python/libusb1/libusb1-1.8.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7,8} )
+
+inherit distutils-r1
+
+DESCRIPTION="Pure-python wrapper for libusb-1.0"
+HOMEPAGE="https://github.com/vpelletier/python-libusb1"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+BDEPEND=""
+RDEPEND="virtual/libusb"
+
+distutils_enable_tests setup.py
diff --git a/dev-python/libusb1/metadata.xml b/dev-python/libusb1/metadata.xml
new file mode 100644
index 0000000000..c5e755c014
--- /dev/null
+++ b/dev-python/libusb1/metadata.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ a.zuber@gmx.ch
+ Andreas Zuber
+
+
+ vpelletier/python-libusb1
+
+
diff --git a/dev-python/mnemonic/Manifest b/dev-python/mnemonic/Manifest
new file mode 100644
index 0000000000..1d1bbd0959
--- /dev/null
+++ b/dev-python/mnemonic/Manifest
@@ -0,0 +1 @@
+DIST mnemonic-0.19.tar.gz 70481 BLAKE2B dc7d42915da65ede66ea7a3b9b467ebbe1a3e5e3cf6e7c44a273fecc3cc49e3461c6456cb03b6036ac34076c3583158f0c3707cf6f77d68e267388d322b2379e SHA512 4388587d4607d0c110851c1f2f53383f2fa282bd01d93b9770c9c15292a01aea5429c410874855c16e12abe9bcd38a82bbe10d0371fb35f472ad2fe81ff19cb0
diff --git a/dev-python/mnemonic/metadata.xml b/dev-python/mnemonic/metadata.xml
new file mode 100644
index 0000000000..b75d394596
--- /dev/null
+++ b/dev-python/mnemonic/metadata.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ a.zuber@gmx.ch
+ Andreas Zuber
+
+
+ trezor/python-mnemonic
+
+
diff --git a/dev-python/mnemonic/mnemonic-0.19.ebuild b/dev-python/mnemonic/mnemonic-0.19.ebuild
new file mode 100644
index 0000000000..a22af499e5
--- /dev/null
+++ b/dev-python/mnemonic/mnemonic-0.19.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{7,8} )
+inherit distutils-r1
+
+DESCRIPTION="Reference implementation of BIP-0039 for generating deterministic keys"
+HOMEPAGE="https://github.com/trezor/python-mnemonic"
+
+MY_PN="python-mnemonic"
+MY_P="${MY_PN}-${PV}"
+SRC_URI="https://github.com/trezor/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND=""
+BDEPEND=""
+
+distutils_enable_tests unittest
+
+S="${WORKDIR}/${MY_P}"
diff --git a/net-im/biboumi/biboumi-9.0_rc1-r1.ebuild b/net-im/biboumi/biboumi-9.0_rc1-r1.ebuild
new file mode 100644
index 0000000000..93f74515e4
--- /dev/null
+++ b/net-im/biboumi/biboumi-9.0_rc1-r1.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake fcaps
+
+MY_PV="${PV/_/-}"
+
+DESCRIPTION="XMPP gateway to IRC"
+HOMEPAGE="https://biboumi.louiz.org/"
+SRC_URI="https://git.louiz.org/biboumi/snapshot/biboumi-${MY_PV}.tar.xz"
+
+LICENSE="ZLIB"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="+idn logrotate postgres +sqlite +ssl systemd udns"
+
+DEPEND="
+ dev-libs/expat
+ virtual/libiconv
+ sys-apps/util-linux
+ sqlite? ( dev-db/sqlite )
+ postgres? ( dev-db/postgresql:* )
+ idn? ( net-dns/libidn )
+ udns? ( net-libs/udns )
+ ssl? ( dev-libs/botan:2 )
+ !ssl? ( dev-libs/libgcrypt )
+ systemd? ( sys-apps/systemd )
+"
+BDEPEND="dev-python/sphinx"
+RDEPEND="
+ ${DEPEND}
+ acct-user/biboumi"
+
+PATCHES=( "${FILESDIR}/biboumi-9.0_rc1-split-cap-on-space.patch" )
+
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+DOCS=( README.rst CHANGELOG.rst doc/user.rst )
+
+# Allow biboumi to run an identd on port 113.
+FILECAPS=( cap_net_bind_service+ep usr/bin/biboumi )
+
+src_prepare() {
+ cmake_src_prepare
+
+ if ! use systemd; then # Don't install biboumi.service.
+ sed -i '/DESTINATION lib\/systemd\/system/d' CMakeLists.txt || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DWITH_BOTAN="$(usex ssl)"
+ -DWITH_LIBIDN="$(usex idn)"
+ -DWITH_SYSTEMD="$(usex systemd)"
+ -DWITH_UDNS="$(usex udns)"
+ -DWITH_SQLITE3="$(usex sqlite)"
+ -DWITH_POSTGRESQL="$(usex postgres)"
+
+ -DWITHOUT_SYSTEMD="$(usex systemd no yes)"
+ -DWITHOUT_POSTGRESQL="$(usex postgres no yes)"
+ ) # The WITHOUT_* is really needed.
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+
+ cmake_build man
+}
+
+src_install() {
+ cmake_src_install
+
+ if ! use systemd; then
+ newinitd "${FILESDIR}/${PN}.initd" "${PN}"
+ fi
+
+ if use logrotate; then
+ insinto etc/logrotate.d
+ if use systemd; then
+ newins "${FILESDIR}/${PN}.logrotate.systemd" "${PN}"
+ else
+ newins "${FILESDIR}/${PN}.logrotate.openrc" "${PN}"
+ fi
+ fi
+
+ diropts --owner=biboumi --group=biboumi --mode=750
+ if use sqlite; then
+ keepdir var/lib/biboumi
+ fi
+ keepdir var/log/biboumi
+
+ insinto etc/biboumi
+ insopts --group=biboumi --mode=640
+ newins conf/biboumi.cfg biboumi.cfg.example
+}
diff --git a/net-im/biboumi/files/biboumi-9.0_rc1-split-cap-on-space.patch b/net-im/biboumi/files/biboumi-9.0_rc1-split-cap-on-space.patch
new file mode 100644
index 0000000000..af86ead1a9
--- /dev/null
+++ b/net-im/biboumi/files/biboumi-9.0_rc1-split-cap-on-space.patch
@@ -0,0 +1,70 @@
+From b98434b5d04d1ada9b24475e17ee8947d96ad1e3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?louiz=E2=80=99?=
+Date: Sun, 16 Aug 2020 16:05:15 +0200
+Subject: [PATCH] In CAP messages, handle the last arg as a list of
+ capabilities
+
+Instead of just one. This fixes the issue of the "trailing whitespace" since we
+now split it on ' '
+
+Fix #3442
+---
+ src/irc/irc_client.cpp | 25 ++++++++++++++-----------
+ tests/utils.cpp | 3 +++
+ 2 files changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp
+index 3ae5ac6..5f0d9b9 100644
+--- a/src/irc/irc_client.cpp
++++ b/src/irc/irc_client.cpp
+@@ -1340,19 +1340,22 @@ long int IrcClient::get_throttle_limit() const
+ void IrcClient::on_cap(const IrcMessage &message)
+ {
+ const auto& sub_command = message.arguments[1];
+- const auto& cap = message.arguments[2];
+- auto it = this->capabilities.find(cap);
+- if (it == this->capabilities.end())
++ const auto& caps = utils::split(message.arguments[2], ' ', false);
++ for (const auto& cap: caps)
+ {
+- log_warning("Received a CAP message for something we didn’t ask, or that we already handled.");
+- return;
++ auto it = this->capabilities.find(cap);
++ if (it == this->capabilities.end())
++ {
++ log_warning("Received a CAP message for something we didn’t ask, or that we already handled: [", cap, "]");
++ return;
++ }
++ Capability& capability = it->second;
++ if (sub_command == "ACK")
++ capability.on_ack();
++ else if (sub_command == "NACK")
++ capability.on_nack();
++ this->capabilities.erase(it);
+ }
+- Capability& capability = it->second;
+- if (sub_command == "ACK")
+- capability.on_ack();
+- else if (sub_command == "NACK")
+- capability.on_nack();
+- this->capabilities.erase(it);
+ if (this->capabilities.empty())
+ this->cap_end();
+ }
+diff --git a/tests/utils.cpp b/tests/utils.cpp
+index 6de19f0..6151733 100644
+--- a/tests/utils.cpp
++++ b/tests/utils.cpp
+@@ -28,6 +28,9 @@ TEST_CASE("String split")
+ CHECK(splitted.size() == 2);
+ CHECK(splitted[0] == "");
+ CHECK(splitted[1] == "a");
++ splitted = utils::split("multi-prefix ", ' ');
++ CHECK(splitted[0] == "multi-prefix");
++ CHECK(splitted.size() == 1);
+ }
+
+ TEST_CASE("tolower")
+--
+2.26.2
+
diff --git a/net-wireless/rtl8192eu/Manifest b/net-wireless/rtl8192eu/Manifest
index b07ca5c22e..55816806f7 100644
--- a/net-wireless/rtl8192eu/Manifest
+++ b/net-wireless/rtl8192eu/Manifest
@@ -1,2 +1,2 @@
-DIST rtl8192eu-0_pre20200123.tar.gz 2531658 BLAKE2B 4d2f6e2b230ea22bf551de8bb904175c1bcde8044d25a91207c6bda77d15095c4192cf4102997f8e2dc35bb263913afc5a60608cc8fc7fec0665b33238ea98d3 SHA512 ac6dc16157c39eae04be3a5767a689751c8c2d701e9f1afe255166c103f9f1ce1392f4378333e36616726995b7a0c021962de769fcdd222e53d6e758d78effac
DIST rtl8192eu-0_pre20200619.tar.gz 2533575 BLAKE2B c20e47d8efd444c3561bf0f66c4e10a318e4cb33b7171f1c03bfd5fd93fa249538c8e8306afe40819254ac6bd6302eb5d4a57caf1dba14b791c88270ba634296 SHA512 72b6cb7a8cbfb6c17852988c833daafa223f234e50abb56d315e955de60adc605695fcecc50257a04a9356f3a4644b4ddf54fceb8f3d32c0bb346ed5606939e4
+DIST rtl8192eu-0_pre20200818.tar.gz 2533387 BLAKE2B adadab239337b7bd36caeaf033247ab1c74f018a304dddd79237a2934784b9c94efa2eb6a865ae12971d1b6f13bead90ac20c9f966d1840bf67c368627d78035 SHA512 e655e3acdd512b5a929d05c5af305d0cb5b97243d62ceb6faddff9c34ca9a0ab92bbe078c2097d680e5413caef29d157c98df94358df30b09ba7f61a36574668
diff --git a/net-wireless/rtl8192eu/rtl8192eu-0_pre20200123.ebuild b/net-wireless/rtl8192eu/rtl8192eu-0_pre20200818.ebuild
similarity index 92%
rename from net-wireless/rtl8192eu/rtl8192eu-0_pre20200123.ebuild
rename to net-wireless/rtl8192eu/rtl8192eu-0_pre20200818.ebuild
index 63dae29001..78dc4347b0 100644
--- a/net-wireless/rtl8192eu/rtl8192eu-0_pre20200123.ebuild
+++ b/net-wireless/rtl8192eu/rtl8192eu-0_pre20200818.ebuild
@@ -4,7 +4,7 @@
EAPI=7
inherit linux-mod
-COMMIT="9cf06524dfebda414675433141f771b36b7e68e8"
+COMMIT="6d2705d8023c25b43f845298e707252fd813e68e"
DESCRIPTION="Realtek 8192EU driver module for Linux kernel"
HOMEPAGE="https://github.com/Mange/rtl8192eu-linux-driver"
diff --git a/net-wireless/rtl8821cu/Manifest b/net-wireless/rtl8821cu/Manifest
index a6e07cdce7..5dc941904c 100644
--- a/net-wireless/rtl8821cu/Manifest
+++ b/net-wireless/rtl8821cu/Manifest
@@ -1 +1,2 @@
DIST rtl8821cu-0_pre20200302.tar.gz 3641031 BLAKE2B c4b8555028b5ddf096f7daf57997d5113aa743e3250bd5cc3b377ac8877a72be5a4a127fdd773e800695a976b55767299c5361aeda45d5004a9e5568743e6a8d SHA512 bd7ae2a6f3259ee9e69d97836870645068c02c3bdcc491e4bdc321c637d4612adfcfb3d31b2643632cbcca30f1cd6f9e030f51169e7fa1dd1841ea665e0cb7e9
+DIST rtl8821cu-0_pre20200822.tar.gz 3643905 BLAKE2B 1fcdfd054fbd9808add7c6c06775201a295ab524862d890b26aadd0af459da9d8b0e502c64f87592fcc4091bacaa467de4f3601960faf896b6c18fe9c676fa94 SHA512 d6be9a6ec204e560b70aa40b0da9bb6c3153a4b876cdd526f6f0f4b02d64847edcb8674ab6cd0306d3ac61e27e68315d35c67616e069f9fffc3546ca49b863a9
diff --git a/net-wireless/rtl8821cu/rtl8821cu-0_pre20200822.ebuild b/net-wireless/rtl8821cu/rtl8821cu-0_pre20200822.ebuild
new file mode 100644
index 0000000000..1ea092bc8e
--- /dev/null
+++ b/net-wireless/rtl8821cu/rtl8821cu-0_pre20200822.ebuild
@@ -0,0 +1,21 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit linux-mod
+
+COMMIT="45a8b4393e3281b969822c81bd93bdb731d58472"
+
+DESCRIPTION="Realtek 8821CU/RTL8811CU module for Linux kernel"
+HOMEPAGE="https://github.com/brektrou/rtl8821CU"
+SRC_URI="https://github.com/brektrou/rtl8821CU/archive/${COMMIT}.tar.gz -> rtl8821cu-${PV}.tar.gz"
+
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="virtual/linux-sources"
+
+S="${WORKDIR}/rtl8821CU-${COMMIT}"
+
+MODULE_NAMES="8821cu(net/wireless)"
+BUILD_TARGETS="all"