Jupiter is a power and device management applet for Linux laptops designed to help reduce power usage by altering kernel parameters based on applied power state and to collect commonly used portable computing settings into a single applet.
This software is no longer updated or maintained in any way. It is incompatible with Linux kernels 3.7+ and GNOME 3+.
Jupiter was created as a fork of my Eee PC Utilities software originally designed to maximize battery life and performance of ASUS Eee PC netbooks. The Jupiter fork was designed to fill the gap in Linux laptop power management by providing a solution for every portable Linux computer where no solution previously existed.
The main UI for Jupiter was orginally written in C# but was later ported to Python by Jorge Luis Betancourt. When Jupiter is executed, a lightning bolt icon appears in the notification area which changes color based on the currently applied performance mode. When clicked with either the right or left mouse button, a pop-up menu list appears organized into sub menus by function. Each function available is automatically detected by the software at startup, and when the software determines that the capabilities are not available on the system it will automatically hide the function, or sub menu which prevents the user from assuming functionality that doesn't exist on his or her platform.
Performance Modes are determined by evaluating CPUFreq capability within the kernel, and exposing three modes: Maximum Performance High Performance Power Saver Maximum Performance mode triggers CPUFreq to "Performance" mode which is the maximum capability available for your CPU. In High Performance mode, the CPU governor is configured to "On Demand" which reduces power when the CPU is idle. Power Saver mode configures your CPU governor to "Powersave" mode which lowers your clock rate to the minimum rate defined in CPUFreq utils for your specific CPU. In addition, if a support package exists for your platform such as the Eee PC, specific functions for your platform are executed. In the example of the Eee PC, when jupiter-support-eee is installed the following extra events are triggered when a performance mode change occurs:
- Super Hybrid Engine
- GMA Overclock
Jupiter recognizes a trigger event which occurs when the power cord is connected, or disconnected from a system. By default when power is applied, Jupiter assumes the user will want to be in Maximum Performance mode. If a user changes this mode while power is connected, Jupiter will "remember" this setting, and apply it the next time power is removed and re-applied making configuration super easy. The same is true when power is disconnected. By default, when a disconnect event occurs Jupiter will shift the performance mode to Power Saver. Should the user change the performance mode with the power disconnected, Jupiter will remember this setting and re-apply it auto-magically when power is removed in the future. In addition, Jupiter will apply specific kernel parameters on a power add or remove event in an effort to maximize power savings. When a support package is applied, vendor specific kernel parameters become available during power change events.
Jupiter detects the availability of device control by evaluating the kernel for specific capabilities. If these capabilities are discovered to be available, a Device Control submenu is created, and an entry is added for each device found. When a user enables or disables a device in Jupiter, the requested mode is saved and Jupiter places that device back into the desired mode when the system is restarted.
Jupiter utilizes the XRandR capability within the X server to provide a list of available video modes. When the notification icon is clicked, Jupiter will identify the connected video output device be it a monitor, laptop display, or TV and will present the user with the top four video modes available.
If a resolution of 1024x600 or 800x480 is detected, an additional "compressed" mode becomes available to the user as either 1024x768 or 800x600. Jupiter will remember the last configured resolution, and override any configuration change made in your operating system.
There are four screen orientation modes available to the user and when a supported touchpad driver is installed, the touchpad will also rotate with the screen. These modes are triggered utilizing the XRandR function of the X server. Jupiter remembers this configuration and will re-apply it after a reboot which is useful to users with touch screens and tablets.
When the Jupiter icon is clicked, it quickly evaluates the display devices available to the user. A video mode selection in Jupiter overrides any existing internal setting, so it is important to remember that if you use dual displays, first enable both displays in Jupiter and then configure them in your display manager.
Custom Kernel Parameters
Applying custom kernel parameters for power profiles couldn't be easier with Jupiter. The first step is to collect the parameters desired. For this example we will use powertop. Disconnect the power cord from your laptop or netbook to force it to battery mode. Open two terminals. In the first terminal, execute:
Once statistics have been collected, powertop should report changes that can be made to improve power savings. For each item, collect the current setting before applying using the second terminal.
For example, if powertop recommends:
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
In your second terminal type:
Write down the current setting (in the example it would be "max_performance").
Apply the change in powertop and continue until there are no further recommendations and close powertop.
In your terminal, we need to create two files one for the battery profile and one for a powered profile.
Issue the following commands to prepare the directory structure:
sudo -s mkdir -p "/usr/lib/jupiter/vendors/$(dmidecode -s "system-manufacturer")" cd "/usr/lib/jupiter/vendors/$(dmidecode -s "system-manufacturer")"
Create two files, one named "battery" and one named "power". They should look similar to the following:
#!/bin/bash echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
#!/bin/bash echo max_performance > /sys/class/scsi_host/host0/link_power_management_policy
Ensure they are executable:
chmod 755 *
Test the change using the "watch" command. Execute the following command, and then disconnect the power. Wait a few seconds and reconnect. If you are successful you should see the kernel parameter change dynamically. You can place any kernel parameters desired into these profile scripts to be executed on change.
watch --interval=1 'cat /sys/class/scsi_host/host0/link_power_management_policy
Jupiter is designed to allow functions to run in the context of the Jupiter user. If there is no support package for your laptop or netbook linking Jupiter to your custom shortcut keys, you can create custom shortcut keys in GNOME 2.
The following tools found in /usr/lib/jupiter/scripts can be configured to execute by key combination.
- WIFI Toggle - (sudo /usr/lib/jupiter/scripts/wifi)
- Bluetooth Toggle - (sudo /usr/lib/jupiter/scripts/bluetooth)
- CPU Control - (sudo /usr/lib/jupiter/scripts/cpu-control)
- Screen Resolution Toggle - (sudo /usr/lib/jupiter/scripts/resolutions)
- Screen Rotation Toggle - (sudo /usr/lib/jupiter/scripts/rotate)
- Touchpad Toggle - (sudo /usr/lib/jupiter/scripts/touchpad)
- External Display Toggle - (sudo /usr/lib/jupiter/scripts/vga-out)
To configure, open gconf-editor and browse to global_keybindings:
gconf-editor -> apps -> metacity -> global_keybindings
Next, edit keybinding_commands:
Edit command_1 -> adding the desired function listed above in parens. Ex. "/usr/lib/jupiter/scripts/touchpad"
Now you can use F3 (or whatever combo you choose) to toggle the touchpad off and on.