Jump to content

Whats coming in the next version and feature requests


  • Please log in to reply
46 replies to this topic

#21
trebuin

trebuin

    InsanelyMac Protégé

  • Members
  • Pip
  • 8 posts
If it hasn't been mentioned yet, I'd like to request control for the third fan on iMac.

Also, it'd be nice if there was a way to automate the control for the fans and especially separately. Fan 0 seems to want 2300 rpm and then I can crank up fan 1 for cooling. If I increase the speed of fan 0, it seems to starve fan 1 of air and the temps actually increase. It would be great to automate fan 1 and leave fan 0 at 2300 rpm.

Anyhow, without these changes, this has been a very valuable product! Thank you so very much for your work on it.

Treb

#22
rastavibes

rastavibes

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 3 posts
A fan speed only app would be lovely for us musicians, as the fan speed is persistent , poling wouldnt be needed, so we could get our best latency with cooler cpu.

(Anyway we can always set the fan speed and the quit all the 3 inputremapper instances on task manager, but then if you want to change the speed again you need to reboot, you cant just run the executable again)

#23
trebuin

trebuin

    InsanelyMac Protégé

  • Members
  • Pip
  • 8 posts

A fan speed only app would be lovely for us musicians, as the fan speed is persistent , poling wouldnt be needed, so we could get our best latency with cooler cpu.

(Anyway we can always set the fan speed and the quit all the 3 inputremapper instances on task manager, but then if you want to change the speed again you need to reboot, you cant just run the executable again)


Well, I have this change:

On bootup, I have a startup script running, I added
inputremapper.exe -StopService inputremapper
to it after 14 seconds of running and also removed the inputremapper from the autorun file. This allows inputremapper to run and set the clocks. This frees the resources.

I also have a batch with a shortcut on my desktop with this:
inputremapper.exe -StartService inputremapper
inputremapper.exe -TrayIcon

This allows the program to completely restart.

#24
U.C.

U.C.

    The Leopard Roars

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 2,080 posts
  • Gender:Male
  • Location:God's Green Earth
  • Interests:Everything Apple, Computers, Movies
I would really love support for my iMac, so that I can set my fan speed in Windows.

#25
zillion42

zillion42

    InsanelyMac Protégé

  • Members
  • Pip
  • 12 posts
Hi Erik,

Thanks so much for that great application, works better than the multi-million-dollar-company's counterpart. I am really pleased with the functionality... why can't apple hire programmers like you ?
Unlike my signature might suggest, I am using Input Remapper on a MBP 2.4 SantaRosa, not on my Hackintosh...

My most awaited and hopefully easily implemented feature (same like WhiteEagle)

- "auto-backlight-dimming" (like osx) after x seconds afk

My Battery lifetime is precious. "ohh my preciousssss"... Considering that, would it be possible to speedstep the CPU or GPU when idling ? Nvidia PowerMizer doesn't seem to work for me...
I was searching all over the place for a Hardware Independent Power Saver application, something like my Toshiba Power Saver...

Wouldn't it be worthwhile investing some time in making our battery live longer...

Regards...
Tobi

PS: If anyone wants to give me a hint on how to access the SMC values with VisualStudio I'd be more than helped...
edit: ... the name of the interop dllimport as a PM... :(

#26
devellison

devellison

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
I'm using IR just for the fan control - apparently I've got one of the thermal-paste-caked MacBook Pros and was having constant crashes under Windows XP due to overheating. Lifting the back of the MBP off the table, removing aftermarket covers I had put on to prevent scratches, and setting the fans to run high with IR appears to have solved the problem.

As far as future requests - I'd love to see more in the fan control / temperature readout department. Maybe splitting it into it's own tab or app and cleaning up the controls/displays (e.g. showing requested fan speed next to actual by the control rather than in a values window, adding units (RPM), adding a more easily readable temperature gauge with a history - maybe like nTune's TaskManager ripoff display, allowing a curve map to be set between temperature and fan speed, etc.).

Anyway, thanks much for IR!

Cheers,
Mike

#27
RoninXI

RoninXI

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
I know others are requesting this as well but I would really like fan control as a separate app. I have all kinds of problems with IR :)

#28
Jo Shmo

Jo Shmo

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 3 posts
Hi there. Just to add to the requests above, **please please please** release just a standalone Fan Control app. I have no need for the other functions of Input Remapper, leaving the rest to Boot Camp 2.1. I actually tried IR just for Fan Control but uninstalled it due to its other functions.

#29
Andrewiski

Andrewiski

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
Please add CPU temps to the systray Icon on roll over or optionaly overlay the icon with the cpu temp. This would allow the adjustment of the fan speed to get it dialed in. If you need or want any help in the development of this app I would be happy to contribute. I am an experinced windows developer in C, C++, C#, and VB. You donated this app so I will donate my time.

This is my first Apple since the Apple II days and I only bought it to write an Iphone app so most of the time it will be running XP.
Great app. Keep up the good work.

Andy

#30
defz

defz

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 2 posts
Just a fan control (like most others).

edit: A working download? The site has been down for days :)

#31
Thunder82

Thunder82

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts
Not sure if updates are still being pushed out.. but i would love to have just the fan control as well. I don't use the remapping function at all, it just causes keyboard issues for me.

Hopefully your still working on this software.. ;)

#32
och

och

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 2 posts
Also wondering if the new version is coming. The current latest version does not work on the new (late 2008) Macbooks.

#33
peterjwhite

peterjwhite

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
Hi, one more request for fan control on the late 2008 aluminum unibody MacBooks. I'll be the first to make a donation via PayPal when you have this working, thanks in advance!

#34
Brian Huynh

Brian Huynh

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
If program can be made to work with Macbook Air 1st Generation and also fan control. I would interested in donating $20 - $30 for a working version.

#35
NeverLegal

NeverLegal

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
  • Gender:Male
Has anyone found out if it is possible to turn-ON autodim. Working with 10.5.6 on a Latitude D620 Core 2 Duo. Sleep not enabled. Sound almost working (minus mic). 2 Finger-scrolling. The works... AUTODIM!!!!! Can't move on with my life until I figure out if this is possible. Help?

NL

#36
campliu

campliu

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
Hi, friends:

I got my own program which a dedicated fan controller. It been tested on my new Mac Mini early 2009 (Windows XP). And my source code is open. Everybody should use this to build up a nice GUI program.

NOTE: The program is only a proof of concept. So it only works but lack of functionalities.

1. The program need GIVEIO device driver support. You can get it by install speedfan. Or you can download the standalone package from anywhere.
2. It is a console command line program. Not easy to use, but easy for script. You can add temperature sensor detect function in it.
3. How to get the 'key' definitions of Apple SMC. Please install smcFanControl under OSX. There is a console program in /Application/smcFanControl.app/Contents/Resource/Source. It named 'smc'. Use the command line 'smc -l' to get all 'Key' definitions.
4. For the Apple SMC programming, please refer to Linux Kernel applesmc.c which a kernel extension. It is nice program to communicate with SMC under Linux. The code should help you and me.

BTW: Sorry for my poor English. I am from China. If you got better idea, please email me: iam.liuzhong@gmail.com

#include "stdlib.h"#include "windows.h"//Console inp and out functions#include "conio.h"#define APPLESMC_DATA_PORT	0x300/* command/status port used by Apple SMC */#define APPLESMC_CMD_PORT	0x304#define APPLESMC_STATUS_MASK			0x0f#define APPLESMC_READ_CMD				0x10#define APPLESMC_WRITE_CMD				0x11#define APPLESMC_GET_KEY_BY_INDEX_CMD	0x12#define APPLESMC_GET_KEY_TYPE_CMD		0x13SC_HANDLE hSCMan = NULL;BOOL IsWinNT = FALSE;BOOL IsDriverLoaded = FALSE;//		Return Value						//		Meaningenum {  DRIVER_ALREADY_INSTALLED=100,		//100 Driver is already Installed		DRIVER_INSTALL_SUCCESS,				//101		DRIVER_INSTALL_FAILURE,				//102		DRIVER_ALREADY_UNINSTALLED,			//103		DRIVER_UNINSTALL_SUCCESS,			//104		DRIVER_UNINSTALL_FAILURE,			//105		DRIVER_NOT_INSTALLED,				//106		DRIVER_ALREADY_STARTED,				//107		DRIVER_IN_USE	};// SCM & GIVEIO controlBOOL InitSCM(){	if ((hSCMan = OpenSCManager(NULL, NULL,SC_MANAGER_ALL_ACCESS)) == NULL) 	{		printf("ERROR: Can't connect to Service Control Manager.\n");		return FALSE;	}		return TRUE;}BOOL ShutDownSCM(SC_HANDLE hSCMan){	return CloseServiceHandle(hSCMan);}DWORD DriverInstall(LPSTR lpPath, LPSTR lpDriver){   BOOL dwStatus = 0;   SC_HANDLE hService = NULL;   // add to service control manager's database   if ((hService = CreateService(hSCMan,								 lpDriver,								 lpDriver, 								 SERVICE_ALL_ACCESS, 								 SERVICE_KERNEL_DRIVER,								 SERVICE_DEMAND_START, 								 SERVICE_ERROR_NORMAL, 								 lpPath, NULL, NULL, NULL, NULL, NULL)) == NULL) 			dwStatus = GetLastError();   else 			CloseServiceHandle(hService);   return dwStatus;}DWORD DriverRemove(LPSTR lpDriver){   BOOL dwStatus = 0;   SC_HANDLE hService = NULL;   // get a handle to the service   if ((hService = OpenService(hSCMan, lpDriver, SERVICE_ALL_ACCESS)) != NULL)    {      // remove the driver      if (!DeleteService(hService)) dwStatus = GetLastError();   }   else dwStatus = GetLastError();   if (hService != NULL) CloseServiceHandle(hService);   return dwStatus;}/////////////////////////////////////////////////////////////////   FUNC: GetDriverStatus//   DESC: Returns a Bool; 0 -> GiveIO Driver NOT loaded//						   1 -> GiveIO Driver LOADED///////////////////////////////////////////////////////////////int GetDriverStatus() {	return IsDriverLoaded;}BOOL AttachDrv(){	HANDLE h;    h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);    if(h == INVALID_HANDLE_VALUE) 	{        printf("ERROR: Couldn't access giveio device.\n");        return FALSE;    }	CloseHandle(h);	return TRUE;}BOOL AttachDIO(){	OSVERSIONINFO osvi;	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);	GetVersionEx(&osvi);		IsWinNT = osvi.dwMajorVersion == 3 || osvi.dwMajorVersion == 4 || osvi.dwMajorVersion == 5 || osvi.dwMajorVersion == 6;		if(IsWinNT)	{		//Load the DirectIO Driver and attach it to this process		//try opening SCM ; if failed Bail out		if(!InitSCM()) return FALSE;			//Install the Driver		char szDrvPath[MAX_PATH];				GetSystemDirectory(szDrvPath,MAX_PATH);		lstrcat(szDrvPath,"\\Drivers\\GiveIO.sys");				DWORD dwRet = DriverInstall(szDrvPath,"giveio");		if(dwRet != 0 && dwRet != 0x00000431)	//Success or already installed		{			printf("ERROR: Could not initialize GiveIO.sys Driver.\n");			return FALSE;		}			if(AttachDrv())		{			IsDriverLoaded = TRUE ;			return TRUE ;  // Successful PROCESS_ATTACH		}		else		{			DriverRemove("giveio");			return FALSE;		}	}		return TRUE;}BOOL DetachDIO(){    // Perform any necessary cleanup. 	//if it is WinNT unload the giveIO driver	if(IsWinNT)	{			DriverRemove("giveio");			IsDriverLoaded = FALSE ;			return ShutDownSCM(hSCMan);	//No Error Check :-P	}	return FALSE;}short OutPort( int PortAddress, int PortData ){  short Dummy;   Dummy = (short)(_outp( PortAddress, PortData ));  return(Dummy);}short InPort( int PortAddress ) {  short PortData;    PortData = (short)(_inp( PortAddress ));  return( PortData );}int wait_status(short val){	unsigned int i;	val = val & APPLESMC_STATUS_MASK;	for (i = 0; i < 200; i++) {		if ((InPort(APPLESMC_CMD_PORT) & APPLESMC_STATUS_MASK) == val) return 0;		Sleep(10);	}	return -1;}static int applesmc_read_key(const char* key, short* buffer, short len){	int i;	OutPort(APPLESMC_CMD_PORT, APPLESMC_READ_CMD);	if (wait_status(0x0c)) return -1;	for (i = 0; i < 4; i++) {		OutPort(APPLESMC_DATA_PORT, key[i]);		if (wait_status(0x04)) return -1;	}	OutPort(APPLESMC_DATA_PORT, len);	for (i = 0; i < len; i++) {		if (wait_status(0x05)) return -1;		buffer[i] = InPort(APPLESMC_DATA_PORT);	}	return 0;}static int applesmc_write_key(const char* key, short* buffer, short len){	int i;	OutPort(APPLESMC_CMD_PORT, APPLESMC_WRITE_CMD);	if (wait_status(0x0c)) return -1;	for (i = 0; i < 4; i++) {		OutPort(APPLESMC_DATA_PORT, key[i]);		if (wait_status(0x04)) return -1;	}	OutPort(APPLESMC_DATA_PORT, len);	for (i = 0; i < len; i++) {		if (wait_status(0x04)) return -1;		OutPort(APPLESMC_DATA_PORT, buffer[i]);	}	return 0;}int main(int argc, char* argv[]){	short	speed[2];	char	MINSPEED[5] = "F0Mn";	int		st = 0;	AttachDIO();	st = GetDriverStatus();	printf("Driver Status: %d\n", st);	if (st != 1) return 1;	if (argc == 2) {		printf("Set the Minimal speed: %s\n", argv[1]);		st = atoi(argv[1]);		st = st * 4;		speed[0] = st >> 8;		speed[1] = st & 0x00FF;		for (int i = 0; i < 120; i++)		{			if (applesmc_write_key(MINSPEED, speed, 2) == 0) break;			Sleep(1000);		}		if (i == 120) {			printf("Failed, retry again!\n");			return 1;		}		printf("Update Successful\n");	}	for (int i = 0; i < 120; i++)	{		memset(speed, 0, sizeof(speed));		if (applesmc_read_key(MINSPEED, speed, 2) == 0) break;		Sleep(1000);	}	if (i == 120) {		printf("Failed, retry again!\n");		return 1;	}	st = (speed[0] * 0xFF + speed[1]) / 4;	printf("Current Minimal speed: %d\n", st);	printf("All OK!\n");	return 0;}

Usage: smc [Target minimal fan speed you like]

Attached Files

  • Attached File  smc.exe   168.08KB   110 downloads


#37
lubbbo

lubbbo

    InsanelyMac Protégé

  • Members
  • Pip
  • 7 posts
Hi all,

I'm working on campliu project and I've modified his code, following his suggestions, to add some other features.
Actually I've also merged some code from the "Extended Fan Control" OSx program to implement these features:

1) Speed setting for 2 MBP unibody fans (CPU and GPU)
2) Speeds fans dinamically updated on the basis of the CPU and GPU temperatures independently.
3) Three working modality:
a - Only system information retrieval (fans speeds and temperatures, nothing is set)
b - Only minimum speeds fans settings (one shot)
c - Fans speeds updated every 3,5 seconds on the basis of CPU and GPU temperature (linear calculation specifying min and max temp and min fan speed. Like Extended Fan Control program.)

The program is in a very draft state, it works (WinXP prof 32bit) but there are some problems with temperatures calculations (not aligned with SpeedFan results) and it haven't a GUI to control settings (but I'm working on).

The big problem is still present: it is incompatible with BootCamp driver, KbdMgr.exe process must be killed before running this program.
It seems that BootCamp driver polls temperatures and fans speeds causing something like hardware deadlocks that freeze the PC for 1 or 2 seconds.
The workaround is to kill the KbdMgr.exe setup minumum fan speed and restart KbdMgr.exe (the command from console to kill the process is "TASKKILL /F /IM Kbdmgr.exe").
But dinamically adjusted fans speeds requires the KbdMgr.exe not running at all: so no keyboard special keys mapping :-(
Unfortunately InputRemapper doesn't work on my MBP Unibody (April 2009) so I can't use it for keyboard special keys mapping.

My main objective is gaming ... so special keys are not necessary, but I desire the perfection ... ;-)

I need some help on this issues:

1) Correctly decode CPU and GPU temps
2) Adding keyboard special key mapping to cover BootCamp functionalities
3) GUI making
4) Hardware port timeout settings (probably could be a way to making BootCamp working at the same time)

Any suggestion will be very appreciated.

Thanks campliu!

Contact me at: lubboster@gmail.com

Source code and executable in attachment.

USAGE:
FAN <MinTemp> <MaxTemp> <CPU_RPM> <GPU_RPM> <Debug=0/1/2>
or
FAN <CPU_RPM> <GPU_RPM>

or
FAN -i


P.S. Damned Visual Studio Express 2008 (more than 1Gb to build a piece of code) ... use MingW gcc instead it works and it's very light (some changes to "conio.h" are required ... if someone needs help I'm here).

Attached Files



#38
someone16

someone16

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 3 posts
Hi, I have a problem with FAN.exe on Windows Vista x86. It doesn't do anything.

I even compiled it by myself and I got the same result.

Command line:

C:\Users\X\Desktop\FanControl\Debug>FanControl 3000 3000
Manual Mode
Is NT
Driver Status: 0

C:\Users\X\Desktop\FanControl\Debug>



#39
Marco Gessler

Marco Gessler

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
I can work on the GUI...

I'll do it and I hope to have it in a couple of days..

#40
lubbbo

lubbbo

    InsanelyMac Protégé

  • Members
  • Pip
  • 7 posts

Hi, I have a problem with FAN.exe on Windows Vista x86. It doesn't do anything.

I even compiled it by myself and I got the same result.

Command line:



Driver Status: 0
means that the program cannot load the GIVEIO.sys
Have you installed SpeedFan? You must! It install the GIVEIO.sys needed to comunicate with Apple SMC I/O ports.

Hi all,

if you are interested in FanControl future evolutions stay tuned here:

https://sites.google.com/site/lubbbo/

Thanks to all that would help me with suggestions and testing.

My contact: lubboster@gmail.com





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy