Tips and Tweaks Plugin to possibly improve performance of Unraid and VMs


Recommended Posts

This is a plugin that allows you to adjust some NIC parameters, disk caching, and other tweaks.  Some users have found that these tweaks will improve media streaming and gaming performance of VMs.  Feel free to experiment, but I don't recommend just cranking everything up to the maximum values.  Doing that may be counterproductive.  You will have an impact on RAM used, and may create a situation where Linux kills some processes to recover memory causing all sorts of problems with Unraid.

 

Your results will depend on your NIC(s) and what features are available, the architecture of your network, your total RAM, disk drives, and your VMs.

 

Click on the 'Help' button and read carefully before making any adjustments so you understand what each tweak does.

 

Install the plugin using Community Applications.

 

Updates

  • Added the capability to disable FTP and Telnet.
  • Added feature to archive syslogs from the powerdown plugin.
  • Added a feature to kill specified tasks when the array is stopped.
  • Remove disable FTP and Telnet.  This can be done now in Unraid itself.
  • Added better power save scheduling to manage CPU Governors on a schedule.
  • Added 'powertop' for additional power saving adjustments.
  • Removed 'powertop'.  The power savings is very minimal and there are reports of sata controller issues.
  • Like 1
  • Upvote 2
Link to comment

Just installed it, and had my first look, great job!  I think it's well done, I especially like all the help.

 

A few initial nits and suggestions -

* There's a "can can" in the second paragraph

* In all unRAID documentation, we're trying to be consistent with the word 'unRAID', and always capitalize it that way, not Unraid, UnRaid, unRaid, etc; it's Tom's wish

* Suggestion: in the help, change "Some Recommendations:" to "Some General Recommendations:", just to differentiate it better from the specific help entries below it

* Suggestion: add a link to the Tips and Tweaks wiki page, for possibly more info

* Suggestion: add a link with comments to the Tips and Tweaks feedback page.  We would really like to hear back on what works, what works great, and what doesn't seem to help, or even hurts

* Suggestion: In the ring buffer help (TX and RX), it says "The default value is recommended".  If they make a change, and come back a month later, they may not know what the default is.  Suggest changing it to "The default value of 256 is recommended".

 

Items for discussion -

* "Don't use Jumbo Frames" - I'm uncomfortable with such a blanket statement (even knowing it's based on what I wrote!).  We don't yet know if it's everyone using jumbo frames or not, or if the issue is only with certain NIC's/switches/etc.  I think I would prefer something like "For now, avoid Jumbo Frames".  I've adjusted the notes with that tip.

 

* Static IP - I'll respond when I can about it, to the valid points others have made, and why I've begun favoring static IP over DHCP (a problem I saw).  I do realize I may be going too far with it.

 

* dirty cache settings - I think you have a good start to the Help needed for write caching, and a pointer to the guide (good idea!).  I think much more help would still be useful though.  I'd like it to be clear that raising the numbers may not help them in some situations, lowering them may be better!  In particular, decreasing them to single digits may be best for situations with streaming issues, like stuttering and pauses.  Users forget that these numbers were devised in the 32 bit days, and only applied to available RAM within lowmem, the first gigabyte ONLY!  That could be only 300MB to 500MB!  And it all ran fine in our v4 and v5 days!  When we changed to 64 bit in v6, available RAM exploded from 300MB to 7GB, 15GB, and 31GB!  So that 10% ratio might go from 30MB to 3GB, an ENORMOUS increase.  Which is why I've seen one recommendation to change the numbers to vm.dirty_background_ratio=2 and vm.dirty_ratio=3.  A low vm.dirty_background_ratio means it starts dumping the write cache sooner, and therefore less likely to fill it up and cause pauses.

 

* num_stripes=8192 - this is my only disappointment!  I was especially wanting this for the beta thread, because it's probably the single most important workaround just now, for users with VM's and systems hanging when they try large transfers.  Eric seems fairly confident that this fixes it.  Would it be possible to put the highest priority on adding this tweak?

 

I've added the plugin to the Tips and Tweaks wiki page, let me know if there's anything else you would want it to say (or change it yourself).

Link to comment

* num_stripes=8192 - this is my only disappointment!  I was especially wanting this for the beta thread, because it's probably the single most important workaround just now, for users with VM's and systems hanging when they try large transfers.  Eric seems fairly confident that this fixes it.  Would it be possible to put the highest priority on adding this tweak?

 

I have several problems with having the plugin make this change as you are suggesting.

  • This plugin can also be used on 6.1 and that tweak might not be appropriate for 6.1.
  • I don't think this plugin should be making unRAID system changes.

I have put a bold notice at the top of the plugin page that says how to fix the problem.  That's all I am comfortable with right now.

 

I have incorporated your changes and will release an updated version today.  Let me know if you have any other suggestions or additions.

Link to comment

Updated version 2016.05.22 is available.

 

I've changed the plugin to now have two tabs.  One is 'Tips' that has suggestions by unRAID version.  The second tab 'Tweaks' is the tweak settings page.  This is a lot cleaner and gives more pertinent information on one page that is easier to manage.  It provides information on fixes and known issues in one place.

 

If anyone has anything that is missing from the tips, let me know and I can add that.  I think I got them all.

Link to comment

Update version 2016.05.28 is available.

 

I added a new tweak to adjust the cpu frequency governor.  You can set either powersave (on demand) or performance.  Performance sets the cpu frequency to full speed with no frequency step down.  The cpu frequency driver is detected and settings depend on the driver.  The Intel pstate driver is not currently working so any adjustments to the pstate driver will not work.  It is actually recommended to disable the pstate driver.  On newer Intel cpus the pstate driver is installed by Linux and should be disabled when Linux is booted until it is fixed,

 

I have been playing around with the cpu governors and I am not sure there is any value in changing the default setting to performance.  It doesn't seem to take a lot more power when set to performance, and it does seem to help in media performance.  I haven't done any formal testing, so I can't substantiate my findings.

 

This might be helpful to those trying to squeeze one last bit of performance out of their system.

 

If this feature proves valuable, I may implement a cron to set the performance level during certain hours of the day, and set back to power saving the rest of the time.

 

Please offer some feedback.

Link to comment

I have been researching and experimenting with the Linux cpu governors and have learned a few things.  There are several drivers that are used in Linux depending on the cpu.

 

ACPI CPU Freq

This is the driver used for both Intel and AMD processors.  The available governors are:

 

"ondemand" - This is a power saving governor that uses the lowest cpu frequency based on cpu loading.  It is aggressive in switching cpu frequency and is probably best for a widely varying load.

 

"powersave" - This is the power saving governor.

 

"conservative" This is also a power saving governor that uses the lowest cpu frequency based on cpu loading.  It is not as aggressive in switching the cpu frequency and is probably best for a fairly steady load.  It can introduce some latency because of the less aggressive frequency switching with widely varying loads.

 

"performance" - This governor sets cpu frequencies to the maximum and does not vary cpu frequency.

 

Intel pstate

"powersave" - This is the power saving governor specifically for newer Intel processors beginning with Sandy Bridge.  It is designed to manage the cpu frequency more efficiently on Intel processors.

 

"performance" - This governor sets cpu frequencies to the maximum and does not vary cpu frequency.

 

Currently the Intel pstate driver is working on unRAID but shows in the dashboard at boost speeds.

 

I am still experimenting, but I am leaning towards the following recommendations:

- Leave the governor at the default if you don't run VMs.

- Set the governor at "performance" if you use VMs for gaming and media streaming.  The plugin allows you to set "performance" on a schedule so you can turn it off a times to save power.

- Set the governor to "conservative" if you have a fairly steady load and still want to save energy.  It appears to perform well with VMs with fairly steady loads.

 

I am currently using the "conservative" governor.  I find that the cpu frequencies don't change very often and on the isolated cpus for my VM, the frequencies are constant.  The VM is serving media and the cpu load does not vary.

 

Feel free to experiment with the cpu governors and post your findings.

 

EDIT: I stand corrected on the Intel pstate driver.  It does in fact work, but shows on the dashboard running cpus at boost speeds.

Link to comment

Hello,

 

Thanks a lot for this plugin. I'm getting a console warning/error. Not sure what it is but here's an screenshot in case it helps in any way. Please let me know if you need more info, I'm using unRAID stable version 6.1.9

 

wJSZIZn2+

 

Fixed in the latest version released today.

Link to comment

I installed this last night and had a play around. It's nicely organised and, as already noted, the help is fantastic.

 

As a first time user, I had one point of confusion. (apologies, this his from memory as I'm not in front of unRAID);

 

For a couple of the tweaks, the help indicates that lower values could be better 'if your VM is used fro streaming and/or gaming' (or words to that effect.

 

This gave me pause for thought. I run multiple VMs, some of which are used for gaming/streaming, some of which are general purpose workstations. The phrasing here suggests the possibility of setting these values on a per-VM basis but I gather these are global settings?

 

An improvement in language here might offer better clarity.

 

Also, the links on the tips page could open in a new tab/window. Right now the seem to replace the unRAID interface?

 

Thanks again.

 

Link to comment

Nice work!  The Tips and Tweaks wiki hasn't been keeping up with the plugin!

 

My AMD appears to be using a different governor, 'Driver' and 'Governor' are blank.  Here's a few lines from my syslog, let me know what else you want.

May 31 08:17:26 JacoBack kernel: smpboot: CPU0: AMD Athlon 64 X2 Dual Core Processor 4600+ (fam: 0f, model: 4b, stepping: 02)

May 31 08:17:26 JacoBack kernel: Performance Events: AMD PMU driver.

...

May 31 08:17:26 JacoBack kernel: cpuidle: using governor ladder    these are the only 2 lines with the word 'governor'

May 31 08:17:26 JacoBack kernel: cpuidle: using governor menu

The words performance, conservative, powersave, or demand do not occur (not in related lines anyway).  In the past, I thought I used to see more conventional governor lines, with those options listed.  But v6 *may* have changed it for my CPU.

 

Edit: did some research, my CPU may need powernow_k8 loaded, and it's not.  It's remotely possible that I never turned Cool&Quiet on in my BIOS, but I know I used to see the CPU drop to 1000MHz, now it's stuck at 2411MHz.  I checked lsmod, and acpi_cpufreq is listed!  It's not in my syslog.  The plot thickens...

 

I'm sure you haven't finished, but "Max Freq. Latency" needs explanation, help.  The unit is "ms", a time duration, but the word 'Freq' implies "things per time unit", not sure what "Max Freq. Latency" actually means.  If it means 'maximum latency', then I assume you are selecting the highest of a number of readings?  If so, then the average latency might also be useful.

 

Another similar tweakable option you may be interested in is the "io scheduler".  There's been considerable discussion of it in the past here.

 

There have been requests before about the 'turbo write' option (which can dramatically speed writes to the array), requests for an ability to schedule it for certain times of the day.  Since you've added scheduling, you might be interested in using it again for 'turbo write'?  (sorry, my writing is often awkward, wish I could do better)

  • Like 1
Link to comment

Nice work!  The Tips and Tweaks wiki hasn't been keeping up with the plugin!

 

My AMD appears to be using a different governor, 'Driver' and 'Governor' are blank.  Here's a few lines from my syslog, let me know what else you want.

May 31 08:17:26 JacoBack kernel: smpboot: CPU0: AMD Athlon 64 X2 Dual Core Processor 4600+ (fam: 0f, model: 4b, stepping: 02)

May 31 08:17:26 JacoBack kernel: Performance Events: AMD PMU driver.

...

May 31 08:17:26 JacoBack kernel: cpuidle: using governor ladder    these are the only 2 lines with the word 'governor'

May 31 08:17:26 JacoBack kernel: cpuidle: using governor menu

The words performance, conservative, powersave, or demand do not occur (not in related lines anyway).  In the past, I thought I used to see more conventional governor lines, with those options listed.  But v6 *may* have changed it for my CPU.

 

Edit: did some research, my CPU may need powernow_k8 loaded, and it's not.  It's remotely possible that I never turned Cool&Quiet on in my BIOS, but I know I used to see the CPU drop to 1000MHz, now it's stuck at 2411MHz.  I checked lsmod, and acpi_cpufreq is listed!  It's not in my syslog.  The plot thickens...

 

I'm sure you haven't finished, but "Max Freq. Latency" needs explanation, help.  The unit is "ms", a time duration, but the word 'Freq' implies "things per time unit", not sure what "Max Freq. Latency" actually means.  If it means 'maximum latency', then I assume you are selecting the highest of a number of readings?  If so, then the average latency might also be useful.

 

Another similar tweakable option you may be interested in is the "io scheduler".  There's been considerable discussion of it in the past here.

 

There have been requests before about the 'turbo write' option (which can dramatically speed writes to the array), requests for an ability to schedule it for certain times of the day.  Since you've added scheduling, you might be interested in using it again for 'turbo write'?  (sorry, my writing is often awkward, wish I could do better)

 

The driver is found by 'cpufreq-info -d'.  It seems you don't have a driver loaded.  The governors used are found by 'cpufreq-info -g'.  I thought the acpi-cpufreq driver was the default for amd processors.  I guess not.

 

I will add a default indicating the driver and governor cannot be determined.

 

Go to a command line and type 'cpufreq-info -o'.  This will display the cpus, scaling frequencies, and governor for each cpu.

 

Let me know the output of these commands.

 

Try to load the driver using 'monprobe powernow_k8' and then see if the driver and governor can be determined.  If so I may ave to add an option to install a driver.

 

The Max Freq. Latency is supposed to be the max time between frequency changes.  It comes from the 'cpufreq-info -y -m' command.  It is not controllable and I am not sure it really means anything to us.  I will probably just remove it.

 

Scheduling Turbo Write is something I think LT should implement.  I am not sure about the io scheduler.

Link to comment

Any chance that you might consider adding 'Turbo Write' as an 'Tips and Tweaks' option for ver 6.1.9 and earlier?  I know that it has been added to the beta series but it would be nice to have it available from the GUI for the stable versions.  I also realize that it will not be in the "standard" place but anything is better than have to go to the CLI!

Link to comment

Nice work!  The Tips and Tweaks wiki hasn't been keeping up with the plugin!

 

My AMD appears to be using a different governor, 'Driver' and 'Governor' are blank.  Here's a few lines from my syslog, let me know what else you want.

May 31 08:17:26 JacoBack kernel: smpboot: CPU0: AMD Athlon 64 X2 Dual Core Processor 4600+ (fam: 0f, model: 4b, stepping: 02)

May 31 08:17:26 JacoBack kernel: Performance Events: AMD PMU driver.

...

May 31 08:17:26 JacoBack kernel: cpuidle: using governor ladder    these are the only 2 lines with the word 'governor'

May 31 08:17:26 JacoBack kernel: cpuidle: using governor menu

The words performance, conservative, powersave, or demand do not occur (not in related lines anyway).  In the past, I thought I used to see more conventional governor lines, with those options listed.  But v6 *may* have changed it for my CPU.

 

Edit: did some research, my CPU may need powernow_k8 loaded, and it's not.  It's remotely possible that I never turned Cool&Quiet on in my BIOS, but I know I used to see the CPU drop to 1000MHz, now it's stuck at 2411MHz.  I checked lsmod, and acpi_cpufreq is listed!  It's not in my syslog.  The plot thickens...

 

I'm sure you haven't finished, but "Max Freq. Latency" needs explanation, help.  The unit is "ms", a time duration, but the word 'Freq' implies "things per time unit", not sure what "Max Freq. Latency" actually means.  If it means 'maximum latency', then I assume you are selecting the highest of a number of readings?  If so, then the average latency might also be useful.

 

Another similar tweakable option you may be interested in is the "io scheduler".  There's been considerable discussion of it in the past here.

 

There have been requests before about the 'turbo write' option (which can dramatically speed writes to the array), requests for an ability to schedule it for certain times of the day.  Since you've added scheduling, you might be interested in using it again for 'turbo write'?  (sorry, my writing is often awkward, wish I could do better)

 

The driver is found by 'cpufreq-info -d'.  It seems you don't have a driver loaded.  The governors used are found by 'cpufreq-info -g'.  I thought the acpi-cpufreq driver was the default for amd processors.  I guess not.

 

I will add a default indicating the driver and governor cannot be determined.

 

Go to a command line and type 'cpufreq-info -o'.  This will display the cpus, scaling frequencies, and governor for each cpu.

 

Let me know the output of these commands.

 

Try to load the driver using 'monprobe powernow_k8' and then see if the driver and governor can be determined.  If so I may ave to add an option to install a driver.

 

The Max Freq. Latency is supposed to be the max time between frequency changes.  It comes from the 'cpufreq-info -y -m' command.  It is not controllable and I am not sure it really means anything to us.  I will probably just remove it.

 

Scheduling Turbo Write is something I think LT should implement.  I am not sure about the io scheduler.

 

I haz AMD too so here ya go:

 

CPU: AMD FX-8350 Eight-Core @ 4000

 

Linux 4.1.18-unRAID.

root@Tower:~# cpufreq-info -o

          minimum CPU frequency  -  maximum CPU frequency  -  governor

CPU  0      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  1      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  2      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  3      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  4      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  5      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  6      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

CPU  7      1400000 kHz ( 35 %)  -    4000000 kHz (100 %)  -  ondemand

Link to comment

The driver is found by 'cpufreq-info -d'.  It seems you don't have a driver loaded.  The governors used are found by 'cpufreq-info -g'.  I thought the acpi-cpufreq driver was the default for amd processors.  I guess not.

 

I will add a default indicating the driver and governor cannot be determined.

 

Go to a command line and type 'cpufreq-info -o'.  This will display the cpus, scaling frequencies, and governor for each cpu.

 

Let me know the output of these commands.

 

Try to load the driver using 'monprobe powernow_k8' and then see if the driver and governor can be determined.  If so I may ave to add an option to install a driver.

So I tried cpufreq-info -d, and no output at all.

Tried cpufreq-info -o, and the only output was the header line, nothing below.

Then I tried modprobe powernow_k8, again no output, BUT ... the other commands then showed -

root@JacoBack:/boot# cpufreq-info -d

powernow-k8

root@JacoBack:/boot# cpufreq-info -o

          minimum CPU frequency  -  maximum CPU frequency  -  governor

CPU  0      1000000 kHz ( 41 %)  -    2400000 kHz (100 %)  -  ondemand

CPU  1      1000000 kHz ( 41 %)  -    2400000 kHz (100 %)  -  ondemand

And on the Dashboard, the CPU is stepping up and down!  Wow! So simple!  I know I used to see it stepping down before, so I'll report it as a Defect.

 

I do hope you add the driver, but if not, I'll add it myself in go.

 

Once the driver was in, the latency number became far more realistic, currently 109us, was 4294.55ms!

 

cpufreq-info is reporting one more governor than you have, don't know if you want to deal with it.

  available cpufreq governors: conservative, userspace, powersave, ondemand, performance

 

Link to comment

The driver is found by 'cpufreq-info -d'.  It seems you don't have a driver loaded.  The governors used are found by 'cpufreq-info -g'.  I thought the acpi-cpufreq driver was the default for amd processors.  I guess not.

 

I will add a default indicating the driver and governor cannot be determined.

 

Go to a command line and type 'cpufreq-info -o'.  This will display the cpus, scaling frequencies, and governor for each cpu.

 

Let me know the output of these commands.

 

Try to load the driver using 'monprobe powernow_k8' and then see if the driver and governor can be determined.  If so I may ave to add an option to install a driver.

So I tried cpufreq-info -d, and no output at all.

Tried cpufreq-info -o, and the only output was the header line, nothing below.

Then I tried modprobe powernow_k8, again no output, BUT ... the other commands then showed -

root@JacoBack:/boot# cpufreq-info -d

powernow-k8

root@JacoBack:/boot# cpufreq-info -o

          minimum CPU frequency  -  maximum CPU frequency  -  governor

CPU  0      1000000 kHz ( 41 %)  -    2400000 kHz (100 %)  -  ondemand

CPU  1      1000000 kHz ( 41 %)  -    2400000 kHz (100 %)  -  ondemand

And on the Dashboard, the CPU is stepping up and down!  Wow! So simple!  I know I used to see it stepping down before, so I'll report it as a Defect.

 

I do hope you add the driver, but if not, I'll add it myself in go.

 

Once the driver was in, the latency number became far more realistic, currently 109us, was 4294.55ms!

 

cpufreq-info is reporting one more governor than you have, don't know if you want to deal with it.

  available cpufreq governors: conservative, userspace, powersave, ondemand, performance

 

Wow.  I feel that I've opened a Pandora's box with all this talk about cpu scaling.  I'm glad you worked it out.  The best bet is for you to make an entry in the go file and wait for LT to solve.

 

I'm not dealing with the userspace governor because it permits setting a constant cpu frequency and right now I don't see why a person would want to do that.

 

Update on the display issue

 

bonienl has made a fix to the dashboard so the display of the cpu frequency is more appropriate for the pstate driver.  I am begining to believe there are several issues here that is affecting the display of cpu frequencies for some.

  • The processor family seems to affect the pstate operation.  A later processor like a Haswell seems to be running the processor frequencies high.
  • I'm not sure the processor frequency directly correlates to the power consumption of the processor.
  • The P-states of later processors are different and the pstate driver was designed to be more efficient managing power on later processors.
  • The pstate driver is designed to offer the best performance for the power consumed.
  • In my informal tests, processor load above about 10% results in high processor frequencies.
  • In my opinion, there is still more work needed on the pstate driver.

 

If the pstate driver is showing high frequencies and you are not comfortable with that, then disable it.  If you feel the power consumption is acceptable for your needs, then leave the pstate driver.  In my opinion the pstate driver will offer the best performance.

 

I am implementing a change to the plugin to disable turbo speed on the pstate driver.  With it on, the cpu frequencies are running at turbo speeds that don't seem appropriate for a total cpu load in the mid teens.

Link to comment

Keep in mind that the longer the processor runs, the more power is used as well, so going full throttle for the entire duration of a short task may well be more efficient overall than running at 10% for 10x the duration. Total power consumed for a specific amount of work done is a very complex thing, especially when you consider the rest of the rig may also be consuming more power waiting for the cpu to finish.

 

I'd rather see the cpu snap to full throttle, get the job done, and go back to idle instead of stepping up and down trying to play catch up.

Link to comment
  • 1 month later...
  • 1 month later...

I know you said earlier that "I don't think this plugin should be making unRAID system changes", so I suspect you won't be interested!  ;)

 

Have a look at this thread.  It's about disabling Telnet and FTP, something that would be nice, safer for many.  This would of course be a stopgap measure, be better built into unRAID, but would be nice for now.

Link to comment

Any guidance on how to use the Rx and Tx ethernet buffer tweaks?  Also any suggested ways to measure impact?

 

Sorry for the lack of any responses, and I'm no help either!

 

I suppose we would be looking for any improvement in network speed, under various conditions such as a single huge file transfer, multiple simultaneous file transfers, heavy multi-user use, etc.  Timing and comparing a single transfer would be a fair measurement, I think.  You could time the single transfer by itself, then while other transfers are also happening, and while other heavy usage is transpiring.  Time them under lower and higher RX and TX values.  Maybe it won't make any significant difference! (which would be good to know!)

Link to comment

Thanks for the new feature to disable FTP and Telnet!  Nice work!  And quick!

 

I do think there will be users that want FTP but not Telnet, or want Telnet but not FTP.  Might be better to have separate toggles for them.

 

I thought about that but decided against it for the following reasons:

  • Telnet is not necessary and SSH should be used instead.  Putty works with SSH.
  • The built in FTP is very difficult to configure because the configuration file has to be edited by hand and moved to the tmp file system once unRAID has started.  As you recommend in the wiki, an FTP docker or plugin is a better choice.

 

I would like to see LT remove both of these as they are potentially not secure, and other better answers are available.

Link to comment
  • 2 weeks later...

Hey dlandon, I have the 2016.09.16 version of Tips and Tweaks on 6.2 final.  When I start the array I get this error on the console:

/usr/local/emhttp/plugins/tips.and.tweaks/scripts/rc.tweaks: line 69: [: =: unary operator expected.

 

Line 69 is:

if [ $POWERDOWN = "yes" ]; then

but I don't see any other instances of POWERDOWN in the script?

Link to comment

Hey dlandon, I have the 2016.09.16 version of Tips and Tweaks on 6.2 final.  When I start the array I get this error on the console:

/usr/local/emhttp/plugins/tips.and.tweaks/scripts/rc.tweaks: line 69: [: =: unary operator expected.

 

Line 69 is:

if [ $POWERDOWN = "yes" ]; then

but I don't see any other instances of POWERDOWN in the script?

 

I also get the same and line 60 as well.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.