14 September 2024

Adding a USB card to Dell r730xd

As I was tired of being limited to just 2 USB ports, I picked up the Inateck RedComets U21 20Gbps on Prime Day for $31.99 plus tax.


Specs

  • 2 lanes of PCIe 2.0/3.0/4.0 (3.0 or 4.0 required for full speed)
  • Max combined throughput 16 Gbps
  • 10 Gbps dedicated port
    • USB-A
  • 10 Gbps split between
    • 2 x USB-A
    • 2 x USB-C


Add USB Card

  • Shutdown containers and VMs
  • Turn off the server
  • Install the USB card
    • I installed it above the 2.5" drive bays in the back in Riser 3 (Slot 6)
  • Turn on the server
  • Fix fan speed
    • apt-get install ipmitool
    • ipmitool -I lanplus -H 192.168.1.X -U root -P <password> raw 0x30 0xce 0x00 0x16 0x05 0x00 0x00 0x00 0x05 0x00 0x01 0x00 0x00
    • response:
      • 16 05 00 00 00
  • Shutdown the VM you want to add it to
  • Add the USB Card to a VM
    • Select your VM -> Hardware -> Add -> PCI Device
    • Select Raw Device -> Device: ASM2142/ASM3142 USB 3.1 Host Controller
    • Check All Functions
    • Add
  • Start the VM
  • Check that it is working
    • lsusb -t


Test a USB hard drive

  • plug in the USB hard drive
  • determine what drive letter it is:
    • ls -l /dev/disk/by-id
  • Mount it
    • sudo mount -m /dev/sdb1 /mnt/backup-plus
  • Error: unknown filesystem type 'exfat'
    • sudo apt-get install exfat-fuse
    • sudo mount /dev/sdb1 /mnt/backup-plus -t exfat-fuse


Appendix

Sources

Setting up a Jellyfin media server

I wanted to install a media server to help manage my growing library. The top two options that I found are Plex and Jellyfin. I have used Plex in the past, but disliked when they started requiring an account so I went with Jellyfin.


Create the container

  • bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/jellyfin.sh)"


Set Static IP and hostname

  • Proxmox -> jellyfin -> Network -> net0 -> Edit
    • set static ip
  • Restart the container
  • Proxmox -> jellyfin -> Console
    • ping 192.168.1.1
      • this ensures that the container will show up on Unifi's list of clients
  • Unifi -> Clients -> Select the jellyfin -> Settings
    • give it a memorable name
    • check "Fixed IP Address"
      • it should auto-populate with current IP
    • check "Local DNS Record"
      • jellyfin.home.arpa


Setup Jellyfin

  • Self signed SSL certificate:
    • https://jellyfin.org/docs/general/networking/
    • jellyfin -> Console
      • mkdir -p /home/jellyfin
      • cd /home/jellyfin
      • openssl req -x509 -days 3650 -newkey rsa:4096 -keyout ./privkey.pem -out cert.pem -nodes -subj '/CN=jellyfin.home.arpa'
        • -subj '/' can work if you can override ssl verification on the client, but Kodi doesn't have that option
        • -subj '/CN=localhost' was causing jellyfin to crash here are some keywords from the crash:
          • Error occurred during a cryptographic operation
          • MapOpenSsl30Code
      • openssl pkcs12 -export -out jellyfin.pfx -inkey privkey.pem -in cert.pem -passout pass:
      • chown -R jellyfin /home/jellyfin
      • chgrp -R jellyfin /home/jellyfin
  • http://jellyfin.home.arpa:8096
    • create user/pass
    • hamburger menu -> Dashboard -> Networking
      • Check "Enable HTTPS"
      • Check "Require HTTPS"
      • Custom SSL certificate path -> /home/jellyfin/jellyfin.pfx
      • Save
  • Restart the jellyfin container
  • Test the self-signed certificate
    • curl --cacert cert.pem https://jellyfin.home.arpa:8920
  • https://jellyfin.home.arpa:8920
    • hamburger menu -> Dashboard -> Users
      • Add User
      • Name
      • Password
      • Check "Enable access to all libraries"
    • hamburger menu -> Dashboard -> Plugin -> Catalog -> Kodi Sync Queue
      • Install
    • Restart jellyfin


Add to Kodi on Google TV

  • Have Kodi trust the self signed certificate
  • Enable adb (Android Debug Bridge)
    • Determine IP of the Google TV
      • Settings -> System -> About -> Status
    • Enable Developer mode
      • Settings -> System -> About -> Build Number -> Click 10 times or until developer mode is unlocked
    • Enable USB debugging (also enables remote debugging)
    • install adb onto a computer to be able to modify the Google TV remotely
      • sudo apt install android-tools-adb
  • Used adb to add new certs file to existing
    • adb pull /sdcard/Android/data/org.xbmc.kodi/files/.kodi/addons/script.module.certifi/lib/certifi/cacert.pem
    • cat cacert.pem cert.pem > updatedcacert.pem
    • adb push updatedcacert.pem /sdcard/Download/
    • echo -e '<advancedsettings version="1.0">\n<network>\n<catrustfile>special://masterprofile/updatedcacert.pem</catrustfile>\n</network>\n</advancedsettings>' >advancedsettings.xml
    • adb push advancedsettings.xml /sdcard/Download/
  • Have Kodi use the new certs
    • Google TV -> Settings -> Apps -> Kodi -> Permissions -> Files and Media -> Allow management of all files
    • Kodi -> Settings -> File Manager
      • Left Side
        • Add Source -> Browse -> External Storage -> Download -> OK
        • Open Download
      • Right Side
        • Profile directory
      • Long press the files one at a time in the Left pane and select copy
    • Restart Kodi
  • Install Jellyfin on Kodi
    • Kodi -> Settings -> File Manager -> Add Source
      • https://kodi.jellyfin.org
    • Kodi -> Settings -> AddOn Browser
      • Install from Repository -> Kodi Jellyfin Add-ons -> Video Add-ons
      • Select Jellyfin add-on and install
    • Cancel adding the server
    • Disable "Verifiy connection" -> OK
    • Restart Kodi
    • Select Manual server add (as auto does it by IP)
      • https://jellyfin.home.arpa:8920
      • sign in using user/pass
      • Playback -> Addon (default)
      • Choose which libraries you want to sync
        • click "All"
        • click "OK"
    • After Syncing is complete restart Kodi
    • Settings -> Add-ons -> My add-ons -> Video add-ons -> Jellyfin
      • Configure -> Sync -> Enable Kodi Sync Queue -> OK


Appendix

Sources