Saturday, February 20, 2010

Meet Jupiter

For the last few months the Eeebuntu 4 (EB4) team has been working on developing a Debian based distribution for computers capable of functioning well on any system be it a laptop, netbook, or even a desktop.

One of the things we found to be very necessary was a simple interface that could be triggered by a user to make simple configuration changes such as turning the web cam on and off, or rotating the screen. Eee PC Tray fit this scenario very well however in addition to being developed to only function with Eee PC netbooks; we found through feedback that it was difficult to configure and in many cases the software was incompatible, or simply broke with patches released by our parent distribution Ubuntu.

Looking forward towards EB4 we felt that Eee PC Tray was good software, however there was substantial room for improvement and with that in mind I took the opportunity to re-evaluate how I developed Eee PC Tray, and began development of a replacement technology that we now call Jupiter.

The requirements laid out were as follows: Be easy to use and configure, and provide some level of functionality for any laptop, desktop, or netbook computer regardless of brand.

Meet Jupiter
The main UI for Jupiter was written in C#, and executes on both 32 bit and 64 bit systems. 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.

Power Management
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.

Device Management
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.

Screen Resolutions
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.

Screen Orientation
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.

Video Displays
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.

User Friendly Features
Unlike Eee PC Tray, Jupiter is completely self contained and has no need for a configuration file.
  • Hover information is available by simply placing your cursor over the icon, the information displayed is updated while hovering.
  • Capability Auto-detection, only available devices and configurations are available to the user.
  • Memory, Jupiter remembers your last used settings and re-applies them as needed.
  • Fast response, Jupiter evaluates system settings at startup only making it necessary to evaluate user settings on click.
Availability
Jupiter is distributed as a key component of the EB4 distribution, and also supported on Fedora.  Use in any other distribution is not currently supported.

Download a copy of EB4 today - [ LINK ]
Visit the project page at SourceForge for DEB and RPM packages - [ LINK ]
Questions thread for Eeebuntu and Fedora users - [ LINK ]

NOTE: Installing an unsupported package on a distribution other than EB4 or Fedora may break your distribution.  The packages being made available are only tested on EB4 and Fedora.

52 comments:

Nicu said...

Hi, fewt.
I'm on EB3 and I noticed that there's an eeepc-tray update available.
Does it have anything to do with Jupiter? or should I even update at all, since the currently installed version is running pretty smooth?

Thanks.

Anonymous said...

Fewt you are the awesomest. Feature suggestion: Tuning the fstab and such for SSD longevity so we don't have to hand edit config files.

Artanis said...

You mentioned that the trackpad can be rotated if supported drivers are installed. Is there a list of such drivers?

FEWT said...

@Nicu - I'm not sure how old that update is. I wouldn't update it if everything is working OK.

@Anonymous - Thanks. I am trying to stay away from SSD tuning etc. If you mean changing the IO elevator, yes I would consider that.

@Artanis - It requires a patched version of the synaptic driver, this will be integrated into EB4 very soon.

Nicu said...

Thanks, Fewt, I came to the same conclusion on my own :).
My eee runs very close to perfection right now, so all updates are off.

Artanis said...

@Fewt - Great. I will look forward to it, then. There's still some dialogs that are taller than my screen (gdm login config, gThumb prefs, etc.,) so I frequently find myself rotating the display to get at the hidden parts.

Uncle Slacky said...

Hi Fewt - I'm a big fan of your work on EEE PC Tray and so I tried Jupiter on my current install (Masonux, essentially minimal Ubuntu with LXDE) on my 701. The good news: it works; the bad news, there's no icon for it on the LXDE panel. I know it's not supported, but could I prevail on your better nature (or those of your other fans) for any ideas on how to make it show up (if it can?).

FEWT said...

@Uncle Slacky - I'm not really sure how to help. Jupiter puts an icon in the gnome notification area, if you don't have one with LXDE that would explain why you don't see it.

Viale Fabrice said...

Hello,
I have installed in Ubuntu 9.10. Apparently works fine with some limits.
- icon is a bit large compare to other.
- icon is colored and do not matches elementary theme (use empty, half, full grey colored background).
- bubble information appears in the middle of the the screen when I switch from left to normal (suppose it use the left position).
- I have the feeling that the menu are not responsive as long as bubble information is displayed. It is a little bit problematic when I do a first wrong configuration and want immediately to correct it, clicking the menu again.
- with a NC10 Samsung, webcam and bluetooth menus do not appear.
- disable trackpad seems to disable trackpad only few second.
- a mode to disable trackpad when a user type (is it the current function?).
- I'd like that trackpad rotates automatically when screen rotates (really cool to read pdf files).

congrats to you and on your work

Viale Fabrice said...

Additional information.

- Bluetooth was previously disable using Voria's script (linux on my samsung)
http://www.voria.org/forum/index.php).
When enable, Jupiter display unknow bluetooth.

- webcam is namuga 1.3M (/dev/video0) according to Cheese. Jupiter does not find it.

Uncle Slacky said...

Thanks for the reply. I'll keep looking for a solution. Will you be modifying Jupiter for future LXDE variants of EB4?

Uncle Slacky said...

I figured it out - you need to install "libgtk2.0-cil" from Synaptic to make it show up in the notification tray. I noticed this "dependency" (presumably something do do with mono) when trying to run Jupiter manually from the terminal.

Anonymous said...

Unfortunately it does not work very well with external displays. I attached a projector today, and then it does not offer resolutions that will easily work on both screens (it only seemed to offer resolutions for the external display, but did not include a safe one like 800x600 even although i know that the projector can do that mode), and in fact resolution switching using jupiter stopped working alltogether. I had to resort to commandline randr in the end.

It used to work more or less with the old tool in eb3, so i will post a bug when i have more time to research this.

Anonymous said...

does (jupiter + jupiter-eee-support) replace (eeepc-acpi-utilities + eeepc-tray), or eeepc-acpi-utilities is still necesary in addition to jupiter and jupiter-eee-support? thanks for your nice work.

Crispin said...

Two things I'd like to see: CPU temperature, and fan speed control.

Christian said...

"I figured it out - you need to install "libgtk2.0-cil" from Synaptic to make it show up in the notification tray. I noticed this "dependency" (presumably something do do with mono) when trying to run Jupiter manually from the terminal. "


That worked for me in XUbuntu as well.

Anonymous said...

Works great with Debian Squeeze on 1005ha-h
- jupiter_0.0.34_i386.deb
- jupiter-support-eee_0.0.10_i386.deb

Fn+F10, Fn+F11, Fn+F12 still doesn't natively on 1005ha-h.
Required: System > Preferences > Keyboard Shortcut
Example: Ctrl+F10, Ctrl+F11, Ctrl+F12
Custom Volume mute
amixer -q set Master toggle
Custom Volume down
amixer -q set Master 10- unmute
Custom Volume up
amixer -q set Master 10+ unmute

Please let me know if you have Best practices ...
Thank you

Borsook said...

I have a Eee PC based on AMD Vision platform. Will Jupiter work with this?

Anonymous said...

Can you add a battery status meter to Jupiter?

I keep the battery applet handy, too and would prefer just one.

thanks

FEWT said...

@anonymous - Let me look into the feasibility and difficulty of adding this capability. It is something that I would possibly add to Jupiter in the future.

Dan said...

Fewt - I use Jupiter to manage the wireless on a docked laptop (Always off). Works great! But I find Jupiter always loads in Power Saver even though the laptop is on AC via the docking station. (It is never moved from it). How do I force Jupiter to "Max Performance" on every boot?

Thanks

Anonymous said...

Ciao!

Can you add an option to disable the popups that show up on each boot?

I would prefer not to see them as I trust that jupiter does the right thing.

grazie!

FEWT said...

To disable comments, try 'chmod -x /usr/lib/jupiter/scripts/notify' or move it out of the directory.

FEWT said...

Dan, check the permissions on /var/jupiter and /var/jupiter/*, they should be root:jupiter and 775.

Alatius said...

I'm running Jupiter on Linux Mint 9 without any troubles, except for one tiny missing feature: when rotating the screen, the setting for the subpixel rendering of fonts is not updated, so text will get very ugly colour-fringing. (If the standard order is RGB it should be changed to VRGB when turning the screen to the left, and so on.)

Alatius said...

I don't know if it helps, but I have been able to change the subpixel ordering in Gnome with the command line

gconftool-2 -s /desktop/gnome/font_rendering/rgba_order -t string "vrgb"

Maybe there is another, more neutral way to change this.

FEWT said...

That seems to be a Mint / Ubuntu specific problem. I'll play around and try to recreate it on Fuduntu and Aurora though.

DavidJ said...

Hi Fewt -- I'm using Jupiter on a Toshiba Portege 705 with Ubuntu 10.04. Just updated to version 0.0.46.

My only problem is the CPU control. Before the update it would default to power saver mode regardless of using A/C, battery, ... and did not remember prior setting. Now with the update the default seems to be max performance.

I checked /VAR/JUPITER and the cpu_mode file reads "super" and there is a file named unknown that also reads "super".

Minor problems but ... any ideas? Thanks for all your work!

Abramo said...

Hello, I just started to use "jupiter" and find it a great thing.
My problem is this. When disconnecting the power supply and switches to the battery, "jupiter " switches to "Maximum Performance" instead of "Power Save". How can I change this behavior so that the power cord attached to use the "High Performance" and the battery "Power Save"?
Thanks in advance

FEWT said...

Hi Abramo, Jupiter remembers the last known state so if you place it on battery and tell Jupiter to use "Power Saver" mode, it should remember it the next time you switch to battery.

Abramo said...

Thank you for responding so quickly. I followed the instructions, but the problem is not solved. Every time off or hang up the power cord "jupiter " back to "Maximum Performance". Is there a way to manually set this behavior? I have a Toshiba Equium A200 and I'm running Ubuntu 10.10. The first thing that comes to my mind is that "Jupiter" is not allowed to write to the file where it saves its settings. Where is this file? So I can manually check the permissions on the file (not the first time I have a problem like that). Sorry still trouble, but I am excited about this software and I want it to work.

FEWT said...

Check /var/jupiter and make sure the jupiter group has write permission to the directory and all of the files in it.

I don't test on Ubuntu, so there could be some other underlying issue there.

Abramo said...

No way the permissions were correct. In the folder is a file called cpu_mode and an unknow, which show the state that I am using. Each time back to "MAX".
in any case to you and congrats on your work.

P.S. All other features work.

FEWT said...

If it isn't permissions, your issue is likely Ubuntu related. Jupiter is supported on Fuduntu, Aurora OS, and Fedora. :D

Georg said...

Works on an Asus eeePc 701-4G running Ubuntu Netbook Edition 10.10 Maverick.
Thanks for that great app! /Georg

kruce said...

Hi Fewt,
Was a big fan of the old eeeTray - but now I'm not sure of how this handles the SHE on an 1000HEB (N270). Will it overclock to 1.8 on Max Performance mode? Thanks for the work.

jan said...

Works also with Mandriva 2010.2 and EEE 1015PE. Just xorg-x11-apps force install was needed. Great job, man ;)

James said...

I had to put
echo 0 > /sys/devices/platform/eeepc/cpufv_disabled
into /etc/rc.local for the Performance Modes to work as this has been disabled on the 701 running the latest kernel in Ubuntu Netbook Edition 10.10 Maverick

Thanks for all your work on this.

James said...

Just realised that this is probably the same problem as DavidJ and Abramo were having. As far as I understand cpufv has been disabled for the 701 in the latest kernels as running at max would sometimes cause a crash. I find running in
High Performance fine after applying echo 0 > /sys/devices/platform/eeepc/cpufv_disabled

matthewbpt said...

This is a great program! I am using Arch and the package available doesn't allow changing performance modes unless it is run as root. How do you advise get round this Fewt? I want to get this properly supported in Arch so your response will be very much appreciated :) I will use it to update the package in Arch so everyone can benefit.

Thanks for a great program!

FEWT said...

I use sudoers to grant permission to a group called jupiter, and add users to that group. If you check out a copy of Jupiter from svn you'll find the data in the configure section of debian/postinst or in the .spec for fedora.

Hope this helps!

matthewbpt said...

Cheers! It works perfectly now with the sudoers rules, before the converted install script for Arch just put the files in the right places, I'll update it with your instructions!

FEWT said...

No prob. Link me to the package and I'll get a link to it listed on jupiterapplet.org. :D

roman said...

Hi and thanks for this utility!

I have some problems with Asus-specifc cpu-control script on Ubuntu 11.04/EEE 1015PEM. First, SHE device seems to be /sys/devices/platform/eeepc-wmi/cpufv (note wmi) - added recognition of this path and it seems to work. Second, the graphics card is reported as "Intel Corporation N10 Family Integrated Graphics Controller (rev 02)". It's not recognized by script - but, more seriously, I'm not sure whether the same registers/values would work to change graphics clock speed.

JR said...

Excellent little program and much appreciated by me! I'm running Mint 10.10 on my venerable T42 and no matter what I did always had the processor running at max (1.7ghz) while on battery according to Powertop. With Jupiter it sits at an unbelievably slow 600mhz but gives me fantastic battery life. As I only web browse on battery this suits me to a tee! Thank you.

sneeze_k said...

Hi, FEWT.

First: Thank you for your work on this great program.

Second: Thank you for your kindness to help our forum. Though you don't have to support Bodhi, you are enough kind to make our many things clear. We really appreciated with your help.

http://www.bodhilinux.com/forums/index.php?/topic/1806-stop-manual-frequency-scaling/

FEWT said...

@sneeze_k - You are most welcome, I hope the information helped.

Arup said...

On ASUS 1015B. I have the same issue as mentioned by Roman, I am on x64 Natty. my wmi path is /sys/devices/platform/eeepc-wmi/ How do I mod the script to point to this path? Thanks for this program.

FEWT said...

Jupiter support questions for Ubuntu should go to the Webupd8 team at Launchpad.

https://launchpad.net/~webupd8team

rmcd said...

@fewt: sorry to bother you here but I can't figure out where to ask a question about jupiter under ubuntu (no forum I can see on launchpad). Thanks.

Fewt said...

@rcmd - If it isn't Ubuntu specific you can start a thread at Fuduntu Forum. If it is, try leaving a messaage for the Webupd8 team at http://ppa.webupd8.org/

rmcd said...

@fewt: Ah, thank you! I was looking around and completely missed that page. I will post a comment there.