Bramani

Members
  • Content Count

    5
  • Joined

  • Last visited


Reputation Activity

  1. Like
    Bramani got a reaction from matt407 in Upgrade procedure   
    I would not call it experience, but I did indeed do such an upgrade on a Tinkerboard last weekend.
    They should. Any sorts of hiccups may happen in your environment. I would suggest to:
     
    1. Backup your data: "No backup, no pity."
    2. Locate any *.dpkg-dist and *.dpkg-old files on your system and deal with them before doing anything else.
    3. Read the Debian upgrade guide very carefully. Follow the references, too, especially those in "4.1. Preparing for the upgrade". 
    4. Execute just one step at a time, check for errors, do not continue until you are sure the action was successful. Else eliminate errors first or at least verify they really are negligible. Always keep your config files, do not let the installer overwrite them with newer versions from the packages! Deal with them during the next step.
    5. Do not forget to locate *.dpkg-dist and *.dpkg-old files afterwards, diff the relating config files and either merge or otherwise handle the differences.
    6. Double check the Kernel installation before attempting to reboot.
     
    No guarantees. - However, the upgrade procedure is relatively safe, if your system is in a sane state and you follow the guide precisely.
     
    One note, though: It might be more efficient and faster to backup your data and rebuild the system from scratch, that is, from a clean Armbian Buster image, and just restore your data afterwards. Consider if it is really worth the effort. (In a professional environment, I habe always denied requests to upgrade for several reasons, one of them was deployment being at least as fast or even faster than any in-place upgrades.)
  2. Like
    Bramani got a reaction from gprovost in Helios4 ECC - CPU freq info - air flow   
    Apologies again, I started this thread out of eagerness and curiosity. Not to create confusion. This said, the fans should be relatively quiet once fancontrol kicked in after boot, but that depends very much on your environment. You are right though, Batch 3 fans cannot be shut off (see Wiki). I am not sure whether I understand your second question correctly, are you considering to reverse the fans (and the air flow)? Please don't. As gprovost wrote, the default direction should be the optimum for most use cases. Keeping the HDDs primarily at safe operating temperatures is what really matters in a NAS.
     
    The overview are just a few shell functions I whipped up for comparison of the two units. They have several flaws. For instance, I have used sd[a|b|c|d] names instead of proper UUIDs. The label "RPM" ist wrong, it should read "PWM" instead. And I am not sure if the temperature representation is correct. But nevertheless, here they are. Note that getCPUFreq and getCPUStats currently do not work on Buster, but on Stretch only.
     
    Add these to your non-privileged user's .bashrc and reload with "source .bashrc" or relogin. After that, simply enter "getSysStatus" on the commandline to print the overview.
    # Print current CPU frequency getCPUFreq() { local i freq for i in 0 1; do freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) printf "%s\n" "CPU $i freq.: ${freq%???} MHz" done } # Print CPU statistics getCPUStats() { local i stats for i in 0 1; do # This works, but it needs three expensive syscalls to external commands #stats="$(cpufreq-info -c $i | grep 'stats' | sed 's/,/;/;s/:/: /g;s/\./,/g')" # Same, but reduced by one stats="$(cpufreq-info -c $i | \ awk '/stats/{gsub(",",";");gsub(":",": ");gsub("\.",",");print}')" # Cut front and end from string; this could be done in awk, too, but the # resulting expression would be long and hard to decipher for non-awk users. # Using shell internal string functions should not be that expensive, either. stats="${stats#*: }" stats="${stats% *}" # Finally, print the resulting string, nicely formatted printf "%s\n" "CPU $i stats: ${stats}" done } # Print system fans speed getFanSpeed() { local i j=3 speed for i in 10 17; do speed=$(cat /sys/devices/platform/j$i-pwm/hwmon/hwmon$j/pwm1) printf "%s\n" "Fan J$i RPM: ${speed}" ((j++)) done } # Print SoC temperature getSoCTemp() { local temp=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp) printf "%s\n" "SoC core temp.: ${temp%???},${temp: -3}" } # Print ambient temperature getAmbientTemp() { local temp=$(cat /dev/thermal-board/temp1_input) printf "%s\n" "Ambient temp.: ${temp%???},${temp: -3}" } # Print temperature of all HDDs getDriveTemps() { local i temp for i in /dev/sd[abcd]; do temp=$(sudo /usr/sbin/smartctl -a $i | awk '/^194/{print $10}') printf "%s\n" "$i temp.: ${temp}" done } # Print current power mode status of all HDDs getDriveStates() { local i state for i in /dev/sd[abcd]; do state="$(sudo /sbin/hdparm -C $i)" printf "%s\n" "$i state: ${state##* }" done } # Print system status getSysStatus() { # printf "\n" # getCPUStats # printf "\n" # getCPUFreq printf "\n" getFanSpeed printf "\n" getSoCTemp getAmbientTemp printf "\n" getDriveTemps printf "\n" getDriveStates }  
  3. Like
    Bramani got a reaction from aprayoga in Helios4 ECC - CPU freq info - air flow   
    Apologies again, I started this thread out of eagerness and curiosity. Not to create confusion. This said, the fans should be relatively quiet once fancontrol kicked in after boot, but that depends very much on your environment. You are right though, Batch 3 fans cannot be shut off (see Wiki). I am not sure whether I understand your second question correctly, are you considering to reverse the fans (and the air flow)? Please don't. As gprovost wrote, the default direction should be the optimum for most use cases. Keeping the HDDs primarily at safe operating temperatures is what really matters in a NAS.
     
    The overview are just a few shell functions I whipped up for comparison of the two units. They have several flaws. For instance, I have used sd[a|b|c|d] names instead of proper UUIDs. The label "RPM" ist wrong, it should read "PWM" instead. And I am not sure if the temperature representation is correct. But nevertheless, here they are. Note that getCPUFreq and getCPUStats currently do not work on Buster, but on Stretch only.
     
    Add these to your non-privileged user's .bashrc and reload with "source .bashrc" or relogin. After that, simply enter "getSysStatus" on the commandline to print the overview.
    # Print current CPU frequency getCPUFreq() { local i freq for i in 0 1; do freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq) printf "%s\n" "CPU $i freq.: ${freq%???} MHz" done } # Print CPU statistics getCPUStats() { local i stats for i in 0 1; do # This works, but it needs three expensive syscalls to external commands #stats="$(cpufreq-info -c $i | grep 'stats' | sed 's/,/;/;s/:/: /g;s/\./,/g')" # Same, but reduced by one stats="$(cpufreq-info -c $i | \ awk '/stats/{gsub(",",";");gsub(":",": ");gsub("\.",",");print}')" # Cut front and end from string; this could be done in awk, too, but the # resulting expression would be long and hard to decipher for non-awk users. # Using shell internal string functions should not be that expensive, either. stats="${stats#*: }" stats="${stats% *}" # Finally, print the resulting string, nicely formatted printf "%s\n" "CPU $i stats: ${stats}" done } # Print system fans speed getFanSpeed() { local i j=3 speed for i in 10 17; do speed=$(cat /sys/devices/platform/j$i-pwm/hwmon/hwmon$j/pwm1) printf "%s\n" "Fan J$i RPM: ${speed}" ((j++)) done } # Print SoC temperature getSoCTemp() { local temp=$(cat /sys/devices/virtual/thermal/thermal_zone0/temp) printf "%s\n" "SoC core temp.: ${temp%???},${temp: -3}" } # Print ambient temperature getAmbientTemp() { local temp=$(cat /dev/thermal-board/temp1_input) printf "%s\n" "Ambient temp.: ${temp%???},${temp: -3}" } # Print temperature of all HDDs getDriveTemps() { local i temp for i in /dev/sd[abcd]; do temp=$(sudo /usr/sbin/smartctl -a $i | awk '/^194/{print $10}') printf "%s\n" "$i temp.: ${temp}" done } # Print current power mode status of all HDDs getDriveStates() { local i state for i in /dev/sd[abcd]; do state="$(sudo /sbin/hdparm -C $i)" printf "%s\n" "$i state: ${state##* }" done } # Print system status getSysStatus() { # printf "\n" # getCPUStats # printf "\n" # getCPUFreq printf "\n" getFanSpeed printf "\n" getSoCTemp getAmbientTemp printf "\n" getDriveTemps printf "\n" getDriveStates }