doc:appunti:hardware:raspberrypi_nas
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:hardware:raspberrypi_nas [2021/03/10 16:40] – niccolo | doc:appunti:hardware:raspberrypi_nas [2021/04/02 15:47] (current) – [Home Mediacenter and NAS with the Raspberry Pi] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Home Mediacenter and NAS with the Raspberry Pi ====== | ====== Home Mediacenter and NAS with the Raspberry Pi ====== | ||
- | This is my recipe to build a mediacenter and NAS box using the Raspberry Pi. This is the list of components: | + | This is my recipe to build a **[[wp> |
- | * Raspberry Pi 4. | + | |
- | * Seagate IronWolf 3.5 inch Hard disk, 4 Tb. | + | |
- | * Suptronics.com X835 exapnsion board to connect | + | |
+ | * Ugreen **USB audio** adapter. | ||
+ | * **Gamepad** USB wireless (SNES-like) used as remote control. | ||
+ | {{.: | ||
+ | |||
+ | {{.: | ||
+ | **WARNING** :!: It turned out that the **Raspberry Pi 4**, when it uses the **USB 3** interface, produces **radio interferences on the 2.4 GHz** band. It is **impossibile to connect to the 2.4 GHz WiFi** access point which is only 5 meters far. It was also **impossible to use a wireless keyboard and mouse**, using one USB dongle which also operates on the 2.4 GHz. To operate a **wireless gamepad** (which also uses an USB dongle on the 2.4 GHz frequencies) I had to distantiate the dongle from the Raspberry Pi using and USB **extension cable of about 0.5 meters**. Due this **severe problem**, I can suggest the RPi4 solution only if you will use the **Ethernet** interface or an access point on the **5 Ghz** band. As an alternative to the wireless gamepad or keyboard, you can use the **[[https:// | ||
+ | |||
+ | {{.: | ||
+ | **WARNING** :!: There is another potential problem with the **Raspberry Pi 4**: due the increased CPU power, the designers decided to drop the **H263** and **MPG4** codecs from the hardware. That codecs were enabled in-hardware into the older Raspberry Pi models and the license price was included into the hardware price. In older models you could also purchase additional licenses, e.g. for **MPEG2** and **VC-1**; this is no longer an option on the Raspberry Pi 4. I experience a **[[https:// | ||
====== Subsystems ====== | ====== Subsystems ====== | ||
* **[[raspberrypi_nas_x835_sata_board]]** | * **[[raspberrypi_nas_x835_sata_board]]** | ||
* **[[raspberrypi_nas_smart_hard_disk]]** | * **[[raspberrypi_nas_smart_hard_disk]]** | ||
+ | * **[[raspberrypi_nas_networking]]** | ||
* **[[raspberrypi_nas_kodi]]** | * **[[raspberrypi_nas_kodi]]** | ||
* **[[raspberrypi_nas_audio]]** | * **[[raspberrypi_nas_audio]]** | ||
- | * **[[raspberrypi_nas_networking]]** | ||
* **[[raspberrypi_nas_mail]]** | * **[[raspberrypi_nas_mail]]** | ||
+ | * **[[raspberrypi_nas_remote_control]]** | ||
+ | * **[[raspberrypi_nas_case]]** | ||
- | ===== Networking ===== | ||
- | |||
- | Current release of **RaspiOS** (we are on Debian 10 Buster) uses **dhcpcd** to manage networking (see **[[https:// | ||
- | |||
- | * Use **/ | ||
- | * Do not use **/ | ||
- | * WiFi ESSIDs and passwords are in **/ | ||
- | * Do not install **Network Manager**. | ||
- | * If a gaphical interface is needed, use **lxplug-network**. | ||
- | * If some package installs the systemd **wpa_supplicant.service**, | ||
- | |||
- | I want the **eth0** interface to have a static IP address beside the one eventually assigned by DHCP (i.e. I want an IP alias on eth0:0). This is useful when I wan connect to the host even in an unknown network. To achieve this when dhcpcd is running, it is necessary to create an **user defined hook script**. See this page for more details: **[[..: | ||
- | |||
- | ===== Mail system ===== | ||
- | |||
- | I want a working **mail system** on the NAS, mainly because I want to eventually receive error messages from the various subsystems, think e.g. at the **smartd** daemon watching for S.M.A.R.T. hard drive errors... | ||
- | |||
- | In the following examples **pimedianas** is the hostname of my Raspberry Pi Mediacenter NAS. I istalled the **postfix** package and configured it as **satellite system** using a **SMTP relay host**. The relevant settings in **/ | ||
- | |||
- | < | ||
- | myhostname = pimedianas | ||
- | mydestination = $myhostname, | ||
- | relayhost = mail.example.org: | ||
- | default_transport = smtp | ||
- | relay_transport = smtp | ||
- | myorigin = $myhostname | ||
- | # Rewrite some sender addresses. | ||
- | sender_canonical_maps = hash:/ | ||
- | # Relay host requires SASL authentication. | ||
- | smtp_sasl_auth_enable = yes | ||
- | smtp_sasl_password_maps = hash:/ | ||
- | smtp_sasl_mechanism_filter = plain, login | ||
- | smtp_sasl_security_options = | ||
- | smtp_tls_security_level = may | ||
- | </ | ||
- | |||
- | The content of **/ | ||
- | |||
- | < | ||
- | root | ||
- | root@pimedianas | ||
- | root@localhost | ||
- | root@localhost.localdomain pimedianas@example.org | ||
- | </ | ||
- | |||
- | Write the proper info about **localhost** in **/ | ||
- | |||
- | < | ||
- | 127.0.1.1 | ||
- | </ | ||
- | |||
- | Finally I had to put my **SMTP credentials** required by the relaying server into **/ | ||
- | |||
- | < | ||
- | mail.example.org pimedianas: | ||
- | </ | ||
- | |||
- | Last but not least, I redirected all the mail for root to my real email address in **/ | ||
- | |||
- | < | ||
- | root: | ||
- | </ | ||
- | |||
- | Remember to compile all the files and restart the service: | ||
- | |||
- | < | ||
- | postmap / | ||
- | postmap / | ||
- | newaliases | ||
- | systemctl restart postfix.service | ||
- | </ | ||
- | |||
- | Now all the locally generated mails addressed to **root**, **%%root@pimedianas%%**, | ||
- | |||
- | ===== Kodi ===== | ||
- | |||
- | Installed the packages: | ||
- | |||
- | * **kodi** | ||
- | * **kodi-bin** - Contains the executable **kodi-standalone**, | ||
- | * **kodi-peripheral-joystick** - Necessary to add support for the gamepad. | ||
- | * **kodi-eventclients-kodi-send** - Contains the **kodi-send** tool, used to control Kodi from the command line. | ||
- | |||
- | We create an user called **kodi** which belongs to the groups: **audio**, **video**, **input**, **pulse** and **pulse-access**. To execute kodi as a Systemd service we created an Unit file **/ | ||
- | |||
- | < | ||
- | [Unit] | ||
- | Description = Kodi Media Center | ||
- | |||
- | # if you don't need the MySQL DB backend, this should be sufficient | ||
- | After = systemd-user-sessions.service network.target sound.target | ||
- | |||
- | # if you need the MySQL DB backend, use this block instead of the previous | ||
- | # After = systemd-user-sessions.service network.target sound.target mysql.service | ||
- | # Wants = mysql.service | ||
- | |||
- | [Service] | ||
- | User = kodi | ||
- | Group = kodi | ||
- | Type = simple | ||
- | ExecStart = / | ||
- | Restart = always | ||
- | RestartSec = 15 | ||
- | |||
- | [Install] | ||
- | WantedBy = multi-user.target | ||
- | </ | ||
- | |||
- | The service must be enabled and started. | ||
- | |||
- | ===== Kodi Add-ons ===== | ||
- | |||
- | We don't want to depend on auto-download, | ||
- | |||
- | Despite installing the add-on from a zip file, any **required add-ons** not present into the system will be automatically downloaded from the net and installed. Fortunately you can find the zip files of this additional add-ons into the **$HOME/ | ||
- | |||
- | |||
- | ===== Music ===== | ||
- | |||
- | Beside Kodi, which has its own functions to play music, I want also the functions offered by the **[[https:// | ||
- | |||
- | * **mpd** - The Music Player Daemon, the underlying daemon which actually plays music. | ||
- | * **ncmpc** - It is a MPD client for text terminals, based on ncurses. | ||
- | |||
- | ===== Transfer rate ===== | ||
- | |||
- | We measured the **transfer rate** from other home NASes, just to figure out how much time is required to **transfer 500 Gb of data**. The receiving NAS is the **Raspberry Pi 4** with a **Seagate 4 Tb** IronWolf 3.5 inch hard disk connected through the **X835 USB3** interface. The network is limited to **100 Mbit** transfer rate, due to the limit of the LAN switch. | ||
- | |||
- | ^ NAS model ^ Disk model ^ Transfer rate (Mbit) | ||
- | | LaCie d2 Network | ||
- | | QNAP TS-120 | ||
- | |||
- | ===== Web References ===== | ||
- | |||
- | * **[[https:// | ||
- | * **[[https:// | ||
- | * **[[https:// | ||
- | * **[[https:// | ||
- | * **[[https:// | ||
doc/appunti/hardware/raspberrypi_nas.1615390844.txt.gz · Last modified: 2021/03/10 16:40 by niccolo