Open ihongyi opened 6 years ago
This software is specific to Western Digital My Cloud DLx100 and PRx100 device hardware. It would not make any sense on other platforms.
My hardware is pr4100. The system is Synology The system could not find the systemctl command.
I only found the synoservice command.
Run sudo synoservice -is-enable wdhwd.service
Prompt Service [wdhwd.service] does not exist
synoservice -help --help Show this help --help-dev More specialty functions for deveplopment --is-enabled [ServiceName] Check if the service is enabled --status [ServiceName] Get the status of specified services --enable [ServiceName] Set runkey to yes and start the service (alias to --start) --disable [ServiceName] Set runkey to no and stop the service (alias to --stop) --hard-enable [ServiceName] Set runkey to yes and start the service and its dependency (alias to --hard-start) --hard-disable [ServiceName] Set runkey to no and stop the service and its dependency (alias to --hard-stop) --restart [ServiceName] Restart the given service --reload [ServiceName] Reload the given service --pause [ServiceName] Pause the given service --resume [ServiceName] Resume the given service --pause-by-reason [ServiceName] [Reason] Pause the service by given reason --resume-by-reason [ServiceName] [Reason] Resume the service by given reason --pause-all (-p) [Reason] (Event) Pause all service by given reason with optional event(use -p to include packages) --pause-all-no-action (-p) [Reason] (Event) Set all service runkey to no but leave the current service status(use -p to include packages) --resume-all (-p) [Reason] Resume all service by given reason(use -p to include packages) --reload-by-type [type] (buffer) Reload services with specified type --restart-by-type [type] (buffer) Restart services with specified type Type may be {file_protocol|application} Sleep $buffer seconds before exec the command (default is 0)
You need to make a synology service file. Are you able to run the service directly?
python -m wdhwdaemon.daemon
Do you have instructions to setup DSM on PR4100? Then I can have a look.
python -m wdhwdaemon.daemon Can run What is missing from the plugin setup DSM on PR4100 You need to install DSM boot on the USB Can refer to https://xpenology.com/forum/forum/31-loaders/
synology.txt This is the command I exported.
I flashed the 6.2 loader to a USB drive but it didn't find the PR4100 device via find.synology.com. Please provide more detailed setup instructions if possible.
The service file is made for systemd, you need to create your own service file to match the synoservice spec. Just look at other services for examples.
Thank you very much for your reply Can you find the ip address of pr4100 through the router? Have you modified the vid, pid, and sn of the grub file in the 6.2 loader? If there is no sn, I can provide it to you. Sorry, my lack of knowledge about linux
Maybe this tool can help you https://xpenology.com/forum/topic/12422-xpenology-tool-for-windows-x64/?tab=comments#comment-88470
Oh okay it seems there's a bit more to it... I will try it tonight.
Forgot to tell you that the dsm6.2 loader does not support uefi boot must be set in the BIOS boot mode is legacy only Please modify the BIOS settings and try again
hi @stefaang Can dsm6.2 run on your pr4100 hardware?
Sorry.. The downtime to test this is currently too inconvenient. I may test it later when I'm sure I won't break anything.
Looking forward to your message
@stefaang Hello, is there any progress in stefaang?
Aight... I've spend some time to set up DSM 6.1 based on this linux guide.
# sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:12076 rx:0 RTS|DTR
1: uart:8250 port:000002F8 irq:3 tx:12 rx:0 RTS|DTR
2: uart:16550A mmio:0x8161E000 irq:18 tx:0 rx:0 CTS
3: uart:16550A mmio:0x8161D000 irq:19 tx:0 rx:0
As /dev/ttyS3 shows irq:19, it means no custom kernel is necessary...
echo "FAN=30\r" | sudo tee /dev/ttyS3
I still have to look into the whole syno service component, but you can use my FreeNAS script as a basis. Edit it to use /dev/ttyS3, disable the parts that don't work.
Here's how to get the temperature:
cat /sys/bus/platform/devices/coretemp.0/temp2_input
Hello. I tried the freenas script you wrote, but it will always prompt that the error is not working properly. How do I change it now? Have you run this script and can implement hardware control of pr4100?
It seems doable to port this project to DSM. DSM 6.1 uses python 2.7.12.
python --version
Get python pip. Then install the requirements
sudo pip install pyserial smbus2
Checkout the python27 branch of this project. Apply the fixes of my previous merge requests (the one for group) In wdhwlib/temperature.py, edit the smbus import
import smbus2 as smbus
and update the coretemp base.
_CORETEMP_FILENAME_BASE = "/sys/bus/platform/devices/coretemp.0/temp{0:d}_{1}"
Edit the wdhwd.conf to run as root and on the correct port, no disks, no dimms ... and it runs like a champ.
Probably a few more minor things to get it to run automatically on boot. I'll make a branch in my repo with all the required changes when I'm in a good mood.
Thank you, I tried to give it a try.
I made an install script for wdhw-tools tested on DSM 6.1.7.
wget https://github.com/WDCommunity/wdnas-hwtools/archive/dsm.tar.gz
tar xf dsm.tar.gz && cd wdnas-hwtools-dsm
sudo ./dsm_install.sh
sudo /usr/local/etc/rc.d/wdhwd.sh start
Interact with the client
sudo wdhwc --help
Running sudo ./dsm_install.sh to the last error ./dsm_install.sh: line 27: /usr/local/sbin/wdhwc: No such file or directory Chmod: cannot access ‘/usr/local/sbin/wdhwc’: No such file or directory
After manually creating the sbin directory, the led is normal. lcd has no display.
sudo /usr/local/etc/rc.d/wdhwd.sh start sudo: /usr/sbin/hddtemp: command not found /usr/local/share/wdhwd/scripts/system_up.sh: line 31: /usr/sbin/sendmail: No such file or directory
Changes:
hello stefaang
The path to smartctl should be /usr/bin instead of /usr/sbin
I now run sudo /usr/local/etc/rc.d/wdhwd.sh start will output
Root@ABC-NAS:~# sudo /usr/local/etc/rc.d/wdhwd.sh start
Root@ABC-NAS:~# 2018-11-24 20:32:46,021 - main - ERROR - WdHwDaemon: Daemon failed with PMCCommandTimeoutError: No response received before timeout was reac hed; exiting
/usr/local/share/wdhwd/scripts/system_down.sh: line 31: /usr/sbin/sendmail: No s uch file or directory
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
Exec code in run_globals
File "/usr/local/share/wdhwd/wdhwdaemon/daemon.py", line 925, in
Dsm can't find the sendmail command Only found these 4 commands about mail Syno_disk_smart_mail_send Synoabnormalloginmail Synopasswordmail Synosyslogmail
I'm no longer running DSM, I thought the smartctl path would be same as on debian. I said in the previous post that you still need to write & configure the scripts yourself... e.g. remove the whole sendmail part and put something like this instead
wdhwc lcd -t "Hello\n World"
Which file is written?
I now run sudo /usr/local/etc/rc.d/wdhwd.sh start will output Root@ABC-NAS:# sudo /usr/local/etc/rc.d/wdhwd.sh start Root@ABC-NAS:# 2018-11-24 20:32:46,021 - main - ERROR - WdHwDaemon: Daemon failed with PMCCommandTimeoutError: No response received before timeout was reac hed; exiting /usr/local/share/wdhwd/scripts/system_down.sh: line 31: /usr/sbin/sendmail: No s uch file or directory Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main "main", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code Exec code in run_globals File "/usr/local/share/wdhwd/wdhwdaemon/daemon.py", line 925, in Ret = d.main(sys.argv) File "/usr/local/share/wdhwd/wdhwdaemon/daemon.py", line 814, in main Pmc_version = pmc.getVersion() File "wdhwlib/wdpmcprotocol.py", line 417, in getVersion Return self.__processor.transceiveCommand(_PMC_COMMAND_VERSION) File "wdhwlib/wdpmcprotocol.py", line 350, in transceiveCommand (response_code, response_value) = self.sendCommandAndWaitForResponse(comma nd) File "wdhwlib/wdpmcprotocol.py", line 319, in sendCommandAndWaitForResponse Raise PMCCommandTimeoutError("No response received before " wdhwlib.wdpmcprotocol.PMCCommandTimeoutError: No response received before timeou t was reached
Can these errors be ignored?
Make sure that it's running only once
ps aux | grep wdhwd
Kill -9 the other pids if necessary.
Sorry, I don't know what file to modify to configure lcd Please tell me the file name
Just need to modify client.py?
The scripts to run on system_up/down, button pressed... are defined in /etc/wdhwd.conf. So you need to modify the scripts in the scripts directory. Quite obvious, no?
Sorry, I don't have any knowledge in this area. Would you please help me with an example? Just show any text on the lcd. I will try to change it.
Is it because I can't find a command that can replace sendmail?
Here's how to set something on the LCD: https://github.com/WDCommunity/wdnas-hwtools/blob/master/scripts/system_up.sh#L24-L27 The upcoming days I can add examples to make it behave like the original LCD.
I don't use sendmail... you'll have to sort that out yourself, sorry...
I am looking forward to your example. I have successfully shown the LCD just now. Thank you Can DSM also use buttons? Includes fan control and hard drive information
I can't find /button_pressed.sh and button_pressed.sh in the scripts directory. Is this why I can't use the button? Did you forget to add these two files?
Changes:
- Added basic LCD and buttons support (but you still need to write the scripts yourself)
Thanks, I know, these two scripts need to be written by myself. Now I can only wait for your example.
Can you also make your updates available to dsm?
I have been following your steps
After I used your update in the dsm branch, the LED LCD is now out of control. Is it what I did wrong?
Daemon.py 476 lines Please fix
Now press the button will output Client.py: error: unrecognized arguments: address\n192.168.0.100 Usage: client.py [-h] [-C [CONFIG_FILE]] [-v] [-q] [-V] COMMAND ... Client.py: error: unrecognized arguments: Disk Usage\n1.2G free 49% used Usage: client.py [-h] [-C [CONFIG_FILE]] [-v] [-q] [-V] COMMAND ... Client.py: error: unrecognized arguments: temperature\n 29 °C
Fixed daemon.py typo. Please save me some time by adding a full link in the future. Just click the line in the source code on github. Client errors mean outdated wdhwc client. Run the installer again.
You are free to fork and submit patches yourself...
git clone https://github.com/WDCommunity/wdnas-hwtools
git checkout dsm
git checkout -b somebug
# fix the bug
git commit -am 'Fixed typo whatever'
git push
# make merge request to dsm branch.
Now you can use the button to switch the lcd display.
But will output Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
Exec code in run_globals
File "/usr/local/share/wdhwd/wdhwdaemon/client.py", line 505, in
Temperature cannot be displayed now
Try to change that line to
parameter.extend(text.decode('us-ascii', 'ignore'))
EDIT: why put title case in stack traces?
Can this support Synology? I haven't succeeded in DSM6.1.7. Can I ask you the way?