NAS DIY: HP ML310e Gen8 V2 + TrueNas v13

Hardware:

HP ML310e Gen8 V2

Update system software with SPP gen8.1

Update iLO4 to v2.8.1

CPU:

E3-1220L V3 @1.10GHz

RAM:

32G ECC DDR3 @1.35V / 1066MHz

System Disk:

32G T-Flash Card + 32G USB Disk

Hrad disk drivers

6 LFF SATA

Software:

TruenNAS – Core – 13.0 – U2

Power Consumption

28W ( Without hard driver )

TCO: RMB 1326.8

HP ML310e Gen8 V2 X1 638

Samsung 8G 2RX8 PC3-12800E X4 397

Intel E3-1220L V3 X1 130

SanDisk 32GB USB3.1 CZ430 X1 35.9

SanDisk Ultra 64GB Micro SD X1 35.9

Toolfree MRA190 5.25=>3.5 X2 90

Update iLO4 to the latest version

To have HTML5 console supported in ILO4, we must to update iLO4 to the new version on HP ML310e Gen8 V2

Go to the HPE support center: support.hpe.com

Search iLO4

Select HPE Integrated Lights-Out 4 (iLO 4)

Select Driver and Software

Download ilO4 2.81 of Online ROM Flash Component for Windows x64 – HPE Integrated Lights-Out 4 —— cp051874.exe

Execute the cp051874.exe under windows, extract the firmware bin file, instead of install

Launch a browser, such as firefox, and login into the iLO4 of ML310e Gen8 V2

Go to Administration / Firmware, select the download bin file, and updating

Deploy draw.io app website on local LAN

Create a new ESXi host with 2G RAM/ 20G disk, Debian 10

# Install java JRE

sudo apt install openjdk-11-jre
java –version

# Install apache ant

wget https://downloads.apache.org/ant/binaries/apache-ant-1.10.12-bin.tar.xz
tar xvfJ apache-ant-1.10.12-bin.tar.xz
sudo mv apache-ant-1.10.12/ /usr/local/ant
sudo bash -c ” cat >>/etc/profile ” << EOF
ANT_HOME=”/usr/local/ant”
PATH=”$PATH:/usr/local/ant/bin”
export ANT_HOME
export PATH
EOF
source /etc/profile
ant –version

# Install Tomcat

sudo apt-get install tomcat9 tomcat9-admin

http://127.0.0.1:8080/
http://${SERVER_IP}:8080/
ls -l /var/lib/tomcat9/webapps/ROOT/

# Build drawio, war package

wget https://github.com/jgraph/drawio/archive/refs/tags/v17.1.3.tar.gz
tar xvfz v17.1.3.tar.gz
cd drawio-17.1.3
( cd etc/build && ant war )

# Install drwaio

sudo cp build/draw.war /var/lib/tomcat9/webapps

http://127.0.0.1:8080/draw
http://${SERVER_IP}:8080/draw

# Change draw as the root of tomcat

cd /var/lib/tomcat9/webapps
sudo rm -rf ROOT
sudo mv draw.war ROOT.war

http://127.0.0.1:8080
http://${SERVER_IP}:8080

# Change tomcat to the http default port: 80

sudo grep 8080 /etc/tomcat9/*
sudo sed -i “s/8080/80/g” /etc/tomcat9/server.xml

http://127.0.0.1
http://${SERVER_IP}

无法创建 VMFS 数据存储 music – 无法更改主机配置

Detach the disk from vmware console

Enable vmware SSH

ssh login

esxcli storage core path list

ls -ltrh /vmfs/devices/disks/

partedUtil getptbl “/vmfs/devices/disk/t10.ATA_____WDC_WD40EFRX2D68WT0N0_________________________WD2DWCC4ENXFK993”

partedUtil setptbl “/vmfs/devices/disk/t10.ATA_____WDC_WD40EFRX2D68WT0N0_________________________WD2DWCC4ENXFK993” msdos

Web audio codec guide

https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Audio_codecs

Type

audio/ogg

codecs= FLAC

codecs= Opus

codecs= Vorbis

audio/mp4

codecs= AAC

codecs= FLAC

codecs= mp3

codecs= Opus

codecs= ALAC

audio/wave

audio/wav

audio/x-wav

audio/x-pn-wav

audio/mp3

audio/mpeg

audio/webm

codecs= Opus

codecs= Vorbis

audio/3gpp

audio/3gpp2

audio/aac

audio/flac

audio/x-flac

Ogg/opus is great for music over internet:

High quality, Simple software implementation, and Free.

but not support by iPad/iPhone

Mp4/AAC LC is the best selection for music over internet for Apple mobile product.

In LAN, we can select Loseloss codec:

Android: Ogg/FLAC

iPad/iPhone: Mp4/ALAC

Creating udev rule for USB DAC

Target:

Create a new udev rule which will:

Stop the Jack Daemon if DAC power off

Start the Jack Daemon if DAC power on

Identify USB DAC Card:

Power on USB DAC

Check the name of USB DAC

ls -l /proc/asound/
lrwxrwxrwx 1 root root 5 11月 22 17:55 AUDIO -> card2
dr-xr-xr-x 3 root root 0 11月 16 18:43 card0
dr-xr-xr-x 4 root root 0 11月 16 18:43 card1
dr-xr-xr-x 4 root root 0 11月 22 17:55 card2
-r–r–r– 1 root root 0 11月 16 16:36 cards
-r–r–r– 1 root root 0 11月 16 18:43 devices
lrwxrwxrwx 1 root root 5 11月 16 18:43 Generic -> card0
-r–r–r– 1 root root 0 11月 16 18:43 hwdep
-r–r–r– 1 root root 0 11月 16 18:43 modules
dr-xr-xr-x 2 root root 0 11月 16 18:43 oss
-r–r–r– 1 root root 0 11月 16 18:43 pcm

card2 is the name of DAC Card

ls  /sys/class/sound
card0  card2      controlC1  hwC0D0  pcmC0D3p  pcmC1D0p  pcmC2D0p
card1  controlC0  controlC2  hwC1D0  pcmC1D0c  pcmC2D0c  timer


Get the Attr List of card2

udevadm info /sys/class/sound/card2
P: /devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0/sound/card2
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0/sound/card2
E: SUBSYSTEM=sound
E: USEC_INITIALIZED=523137960408
E: ID_PATH=pci-0000:00:12.0-usb-0:4:1.0
E: ID_PATH_TAG=pci-0000_00_12_0-usb-0_4_1_0
E: ID_FOR_SEAT=sound-pci-0000_00_12_0-usb-0_4_1_0
E: SOUND_INITIALIZED=1
E: ID_VENDOR_FROM_DATABASE=Actions Semiconductor Co., Ltd
E: ID_VENDOR=ACTIONS
E: ID_VENDOR_ENC=ACTIONS
E: ID_VENDOR_ID=10d6
E: ID_MODEL=USB_AUDIO
E: ID_MODEL_ENC=USB\x20AUDIO
E: ID_MODEL_ID=dd01
E: ID_REVISION=0100
E: ID_SERIAL=ACTIONS_USB_AUDIO_4512482ADF0FEEEE
E: ID_SERIAL_SHORT=4512482ADF0FEEEE
E: ID_TYPE=audio
E: ID_BUS=usb
E: ID_USB_INTERFACES=:010100:010200:030000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=snd-usb-audio
E: ID_ID=usb-ACTIONS_USB_AUDIO_4512482ADF0FEEEE-00
E: SYSTEMD_WANTS=sound.target
E: TAGS=:systemd:seat:
udevadm info --path=/sys/class/sound/card2 --attribute-walk

looking at device '/devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0/sound/card2':
    KERNEL=="card2"
    SUBSYSTEM=="sound"
    DRIVER==""
    ATTR{number}=="2"
    ATTR{id}=="AUDIO"

  looking at parent device '/devices/pci0000:00/0000:00:12.0/usb2/2-4/2-4:1.0':
    KERNELS=="2-4:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="snd-usb-audio"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{authorized}=="1"
    ATTRS{bNumEndpoints}=="00"
    ATTRS{bInterfaceClass}=="01"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{bAlternateSetting}==" 0"

  looking at parent device '/devices/pci0000:00/0000:00:12.0/usb2/2-4':
    KERNELS=="2-4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{devpath}=="4"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bmAttributes}=="c0"
    ATTRS{quirks}=="0x0"
    ATTRS{tx_lanes}=="1"
    ATTRS{product}=="USB AUDIO"
    ATTRS{busnum}=="2"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{manufacturer}=="ACTIONS"
    ATTRS{bNumInterfaces}==" 4"
    ATTRS{bDeviceClass}=="00"
    ATTRS{configuration}==""
    ATTRS{maxchild}=="0"
    ATTRS{devnum}=="20"
    ATTRS{serial}=="4512482ADF0FEEEE"
    ATTRS{bMaxPower}=="300mA"
    ATTRS{idVendor}=="10d6"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{urbnum}=="25748"
    ATTRS{idProduct}=="dd01"
    ATTRS{version}==" 1.00"
    ATTRS{removable}=="unknown"
    ATTRS{authorized}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{rx_lanes}=="1"
    ATTRS{lATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:12.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{idProduct}=="0001"
    ATTRS{version}==" 1.10"
    ATTRS{tx_lanes}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{removable}=="unknown"
    ATTRS{authorized_default}=="1"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{busnum}=="2"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{quirks}=="0x0"
    ATTRS{speed}=="12"
    ATTRS{bcdDevice}=="0419"
    ATTRS{maxchild}=="5"
    ATTRS{idVendor}=="1d6b"
    ATTRS{devpath}=="0"
    ATTRS{manufacturer}=="Linux 4.19.0-9-amd64 ohci_hcd"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{rx_lanes}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{urbnum}=="511"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{product}=="OHCI PCI host controller"
    ATTRS{serial}=="0000:00:12.0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{devnum}=="1"
    ATTRS{authorized}=="1"

    
# Get kernel prop
udevadm monitor --kernel --property --subsystem-match=usb
monitor will print the received events for:
KERNEL - the kernel uevent

KERNEL[1083.319560] add      /devices/pci0000:00/0000:00:12.0/usb2/2-4 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:12.0/usb2/2-4
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/002/002
DEVTYPE=usb_device
PRODUCT=10d6/dd01/100
TYPE=0/0/0
BUSNUM=002
DEVNUM=002
SEQNUM=2112
MAJOR=189
MINOR=129

Write your udev rule based on selected attrs

cat /opt/local/libexec/udev/rules.d/99-AD-86d.rules

ACTION=="add",SUBSYSTEM=="sound",ATTR{id}=="AUDIO",RUN+="/opt/local/bin/add_ad_86d.sh"
ACTION=="remove",SUBSYSTEM=="usb",ATTRS{idVendor}=="10d6",ATTRS{idProduct}=="dd01",RUN+="/opt/local/bin/remove_ad_86d.sh"