Skip to content

Commit

Permalink
Release of version 0.64 dual-fan
Browse files Browse the repository at this point in the history
- TPFanControl.exe
- Updated .ini files for debug and release
- Updated Readme
  • Loading branch information
nikolasgd committed Nov 17, 2020
1 parent 701de32 commit 38295b7
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 80 deletions.
22 changes: 16 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,25 @@
# TPFanControl for dual-fan ThinkPads (P1, X1 Extreme..)

Tested on a ThinkPad P1 Gen 3 with Nvidia GPU.
Tested and working without issues on my ThinkPad P1 Gen 3 with Nvidia GPU.

## About

This is a fork of https://github.com/byrnes/TPFanControl. On my machine, the fan on the right side is not always stopped and this fork aims to fix this issue.
This is a fork of https://github.com/byrnes/TPFanControl.

## Requirements
Features / fixes:

As a requirement either install [tvicport](https://www.entechtaiwan.com/dev/port/index.shtm) manually or install the original version of TPFanControl found [here](https://sourceforge.net/projects/tp4xfancontrol/), and run the dual-fan version instead of the original version.
- **On my machine, this completly fixes the issue that the fan on the right side was not always stopped**
- Speed of both fans (left and right) is now read from the embedded controller and displayed in RPM
- Sensor name for GPU and some presets are set correctly for modern machines
- Minor cosmetic changes

## Running at startup
Some files were removed from the repository that should not be under version control. Other than that, no code reformatting or refactoring was done for the utmost transparency of changes to the original version of TPFanControl.

## Installation

Either install [tvicport](https://www.entechtaiwan.com/dev/port/index.shtm) manually or install the original version of TPFanControl found [here](https://sourceforge.net/projects/tp4xfancontrol/) and run the dual-fan version instead of the original version:

Currently not possible with Windows 10 because it lacks a certificate to prevent the Windows security warning.
After you installed the original version of TPFanControl, replace the .exe (and possibly .ini) file with the corresponding files in the `fancontrol/Release` directory.

## Running at startup
To my knowledge, running at startup is currently not possible with Windows 10 because it lacks a certificate to prevent the Windows security warning. If you have working and easy to reproduce instructions how to create a self signed certificate: please let me know or create a pull request.
10 changes: 5 additions & 5 deletions fancontrol/Debug/TPFanControl.ini
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Hotkeys=1
// "Active=3" program will come up in manual mode.
// bei "Active=0" wird nur die Konfiguration ausgelesen.
// bei "Active=1" die Veränderung des Lüfterverhaltens ist aktiviert.
// bei "Active=2" startet das Programm im "Smart"-Modus.
// bei "Active=2" startet das Programm im "Smart"-Modus.git
// bei "Active=3" startet das Programm im "Manual"-Modus.
Active=2
// -----------------------------------------------------------------
Expand Down Expand Up @@ -66,7 +66,7 @@ SlimDialog=0
// X61 for T4x, R5x set BluetoothEDR=0 )
// BluetoothEDR=1 für bluetooth mit enhanced data rate (EDR, z.B. T61,
// X61 für T4x, R5x BluetoothEDR=0 setzen)
BluetoothEDR=0
BluetoothEDR=1
// -----------------------------------------------------------------
// Windows Priority of Process (0-5, normal=2), increase if fancontrol has
// big delays in response while other processes consume performance.
Expand All @@ -81,7 +81,7 @@ NoBallons=1
// -----------------------------------------------------------------
// check temperatures every x seconds (default 5)
// Überprüft die Temperaturen alle x Sekunden (Standard ist 5).
Cycle=5
Cycle=3
// -----------------------------------------------------------------
// For Thinkpads A2x,T2x,X2x set NoExtSensor=1 to exclude reading
// of extended sensors to prevent program errors. Attention 570(E)
Expand Down Expand Up @@ -161,7 +161,7 @@ Log2csv=0
// Liste der Sensoren, getrennt durch Kommata, die bei der
// Ermittlung der Maximaltemperatur ignoriert werden. (Verwenden
// Sie kleine Buchstaben, z.B. "IgnoreSensors=pci,aps".)
IgnoreSensors=no5
IgnoreSensors=
// ---------------------------------------------------------
// List of new 3 letter sensor names, delete leading
// slashes to aktivat. Don't use capital letters for readability
Expand All @@ -173,7 +173,7 @@ IgnoreSensors=no5
//SensorName2=aps
//SensorName3=pcm
//SensorName4=gpu
SensorName5=no5
//SensorName5=no5
//SensorName6=x7d
//SensorName7=bat
//SensorName8=x7f
Expand Down
Binary file added fancontrol/Release/TPFanControl.exe
Binary file not shown.
134 changes: 66 additions & 68 deletions fancontrol/Release/TPFanControl.ini
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,19 @@
//
// HotKey=HotKeyMethod,Key:
//
HK_BIOS=2,F10 //BIOSMode= Crtl+F10
HK_Manual=1,M //ManualMode= Alt+M
HK_Smart=2,S //SmartMode= Crtl+S
HK_SM1=7,1 //SmartMode1= ctrl+Alt+Shift+1
HK_SM2=7,2 //SmartMode2= ctrl+Alt+Shift+2
HK_TG_BS=6,B //Toggle:BIOS-Smart= Crtl+Shift+B
HK_TG_BM=0,M //Toggle:BIOS-Manual= Crtl+Shift+M disabled
HK_TG_MS=6,F5 //Toggle:Smart-Manual= Crtl+Shift+F5
HK_TG_12=2,F11 //Toggle:SmartMode1-SmartMode2= Crtl+F11
//HK_BIOS=2,F10 //BIOSMode= Crtl+F10
//HK_Manual=1,M //ManualMode= Alt+M
//HK_Smart=2,S //SmartMode= Crtl+S
//HK_SM1=7,1 //SmartMode1= ctrl+Alt+Shift+1
//HK_SM2=7,2 //SmartMode2= ctrl+Alt+Shift+2
//HK_TG_BS=6,B //Toggle:BIOS-Smart= Crtl+Shift+B
//HK_TG_BM=0,M //Toggle:BIOS-Manual= Crtl+Shift+M disabled
//HK_TG_MS=6,F5 //Toggle:Smart-Manual= Crtl+Shift+F5
//HK_TG_12=2,F11 //Toggle:SmartMode1-SmartMode2= Crtl+F11
//
UseTWR=1
UseTWR=0
//
// >>>> Celsius / Fahrenheit: temperatures in C (active) / F <<<<
// >>>> Celsius / Fahrenheit: temperatures in °C (active) / °F <<<<
//
// ATTENTION: example values are for my T61:
// BluetoothEDR=1, SensorName5=no5, IgnoreSensors=no5,
Expand All @@ -45,11 +45,11 @@ UseTWR=1
//
// DE:
// bei "Active=0" wird nur die Konfiguration ausgelesen.
// bei "Active=1" die Ver�nderung des L�fterverhaltens ist aktiviert.
// bei "Active=1" die Veränderung des Lüfterverhaltens ist aktiviert.
// bei "Active=2" startet das Programm im "Smart"-Modus.
// bei "Active=3" startet das Programm im "Manual"-Modus.

Active=1
Active=2

ManFanSpeed=0 // Manual Fan Speed

Expand All @@ -64,8 +64,8 @@ BluetoothEDR=0 //set to 1 for bluetooth with enhanced data rate (i.e. T61,
// -----------------------------------------------------------------
// Windows Priority of Process (0-5, normal=2), increase if fancontrol has
// big delays in response while other processes consume performance.
// Windows-Priorit�t des Processes (0-5, normal=2), ggf. erh�hen, falls
// Reaktion des Programms zu tr�ge wegen Resourcenverbrauch durch andere
// Windows-Priorität des Processes (0-5, normal=2), ggf. erhöhen, falls
// Reaktion des Programms zu träge wegen Resourcenverbrauch durch andere
// Anwendungen

ProcessPriority=2
Expand All @@ -74,33 +74,33 @@ ProcessPriority=2
// Show no icon ballons: NoBallons=1
// Show icon ballons: NoBallons=0

NoBallons=0
NoBallons=1

// -----------------------------------------------------------------
// ENGL: check temperatures every x seconds (default 5)
// DE: �berpr�ft die Temperaturen alle x Sekunden (Standard ist 5).
// DE: Überprüft die Temperaturen alle x Sekunden (Standard ist 5).

Cycle=5
Cycle=3

// -----------------------------------------------------------------
// For Thinkpads A2x,T2x,X2x set NoExtSensor=1 to exclude reading
// of extended sensors to prevent program errors. Attention 570(E)
// is NOT compatible. Fan speed is not available on all models.
// Bei Thinkpads A2x,T2x,X2x NoExtSensor=1 setzen: die Sensoren 9-12
// werden nicht ausgelesen und dadurch Fehlermeldungen vermieden.
// Funktioniert NICHT bei 570(E), Fanspeed nicht immer verf�gbar.
// Funktioniert NICHT bei 570(E), Fanspeed nicht immer verfügbar.

NoExtSensor=0

// -----------------------------------------------------------------
// ENGL: Minimize to systray immediately when starting
// DE: Minimiert das Programm schon beim Start in die Taskleiste.

StartMinimized=0
StartMinimized=1

// -----------------------------------------------------------------
// ENGL: check vista icon every x seconds (default 1)
// DE: �berpr�ft das Vista Icon alle x Sekunden (Standard ist 1).
// DE: Überprüft das Vista Icon alle x Sekunden (Standard ist 1).

IconCycle=1

Expand All @@ -114,7 +114,7 @@ ShowTempIcon=1
// ENGL: Save the icon by a start delay of the service of
// "SecStartDelay" (sec.) within "SecWinUptime" (sec.) after (re)boot
// DE: Das Problem der nicht erscheinenden Icons wird durch eine
// Startverz�gerung um SecStartDelay (Sekunden) innerhalb einer Zeit von
// Startverzögerung um SecStartDelay (Sekunden) innerhalb einer Zeit von
// SecWinUptime (Sekunden) verhindert.

// SecWinUptime=120
Expand All @@ -128,18 +128,18 @@ ShowTempIcon=1
// only together with MinimizeToTray=1)

// DE: Temperaturgrenzwerte, die das Symbol in der Taskbar gelb,
// orange bzw. rot f�rben. (Nur im "Smart"- und "Manual"-Modus
// in Kombination mit "MinimizeToTray=1" verf�gbar.)
// orange bzw. rot färben. (Nur im "Smart"- und "Manual"-Modus
// in Kombination mit "MinimizeToTray=1" verfügbar.)

IconLevels=131 149 158
IconLevels=65 75 80 // Fahrenheit: IconLevels=122 140 158

// -----------------------------------------------------------------
// ENGL: Beep frequency and duration (in ms) for successful
// fan state changes. (Set either or both to zero to
// disable)

// DE: Frequenz und Dauer des Piep-Signals (in ms), das eine erfolgreiche
// �nderung des L�fterzustands ank�ndigt. (Um den Piepton abzuschalten,
// Änderung des Lüfterzustands ankündigt. (Um den Piepton abzuschalten,
// setzen Sie entweder einen oder beide Werte auf 0.)

FanBeep=0 0
Expand Down Expand Up @@ -173,7 +173,7 @@ Log2File=1
// DE: Log2csv=1 aktiviert, Log2csv=0 deaktiviert
// Schreiben nach TPFanControl_csv.txt umbenannt in
// TPFanControl_last_csv.txt nach erneutem Start von TPFanControl
// nach *.csv umbenennen f�r Bearbeitung mit excel
// nach *.csv umbenennen für Bearbeitung mit excel

Log2csv=1

Expand All @@ -186,21 +186,21 @@ Log2csv=1
// Ermittlung der Maximaltemperatur ignoriert werden. (Verwenden
// Sie kleine Buchstaben, z.B. "IgnoreSensors=pci,aps".)

IgnoreSensors=no5
IgnoreSensors=

// ---------------------------------------------------------
// ENGL: List of new 3 letter sensor names, delete leading
// slashes to aktivat. Don't use capital letters for readability
// of temp icon.
// DE: Liste von neuen Sensorname (jeweils 3 Buchstaben), zum
// Aktivieren die Schr�gstriche l�schen. Kleine Buschstaben
// Aktivieren die Schrägstriche löschen. Kleine Buschstaben
// wg. der Lesbarkeit im TempIcon gebrauchen.

//SensorName1=cpu
//SensorName2=aps
//SensorName3=pcm
//SensorName4=gpu
SensorName5=no5
//SensorName5=no5
//SensorName6=x7d
//SensorName7=bat
//SensorName8=x7f
Expand All @@ -219,12 +219,12 @@ SensorName5=no5
// DE: Berechnung von Highest Temp mit:
// Temperatur des Sensor Nr. = reale Temp minus SensorOffsetnr.
// Default: SensorOffset1-12=0 , Grosses O in SensorOffsetnr.
// zum Aktivieren Schr�gstriche l�schen,
// Negative SensorOffsetnr-Werte erh�hen den Temperaturwert.
// zum Aktivieren Schrägstriche löschen,
// Negative SensorOffsetnr-Werte erhöhen den Temperaturwert.


//SensorOffset1=20
SensorOffset2=6
//SensorOffset2=6
//SensorOffset4=2
//SensorOffset5=1
//SensorOffset6=5
Expand Down Expand Up @@ -259,46 +259,44 @@ ShowAll=0
// the temperature is okay again)

// DE: Im Folgenden sind die Temperaturpegel samt den jeweils
// zugeordeten L�fterstufen aufgelistet. (Sobald die Temperatur in
// den Bereich eines niedrigeren bzw. h�heren Pegels wechselt, wird
// die L�fterstufe automatisch angepasst und folglich verringert bzw.
// erh�ht sich die Geschwindigkeit des L�fters.) Diese Liste kann
// weniger oder auch mehr Stufen beinhalten. Sinngem�� sollte die
// erste Stufe die gew�nschte Temperatur definieren, bei der sich
// der L�fter ausschaltet (L�ftergeschwindigkeit 0)
// zugeordeten Lüfterstufen aufgelistet. (Sobald die Temperatur in
// den Bereich eines niedrigeren bzw. höheren Pegels wechselt, wird
// die Lüfterstufe automatisch angepasst und folglich verringert bzw.
// erhöht sich die Geschwindigkeit des Lüfters.) Diese Liste kann
// weniger oder auch mehr Stufen beinhalten. Sinngemäß sollte die
// erste Stufe die gewünschte Temperatur definieren, bei der sich
// der Lüfter ausschaltet (Lüftergeschwindigkeit 0)
//
// Die L�ftergeschwindigkeit 64 ist ein Extremwert und k�nnte somit
// eine von IBM nicht unterst�tzte und sogar sch�digende Betriebsart
// darstellen. Die L�ftergeschwindigkeit 128 ist an sich keine eigene
// Die Lüftergeschwindigkeit 64 ist ein Extremwert und könnte somit
// eine von IBM nicht untersttzte und sogar schädigende Betriebsart
// darstellen. Die Lüftergeschwindigkeit 128 ist an sich keine eigene
// Geschwindigkeitsstufe, sondern gibt stattdessen die Kontrolle
// des L�fters an das BIOS (BIOS mode, 0x80) zur�ck. Der Hintergrund
// dieser Einstellung ist die M�glichkeit, das Programm auszuschlie�en,
// um Extemf�lle wieder vom BIOS steuern zu lassen. (Sobald sich die
// des Lüfters an das BIOS (BIOS mode, 0x80) zurück. Der Hintergrund
// dieser Einstellung ist die Möglichkeit, das Programm auszuschließen,
// um Extemfälle wieder vom BIOS steuern zu lassen. (Sobald sich die
// Temperatur wieder im Normbereich befindet, wird erneut der Smart
// Modus aktiviert.)

// Celsius: // Fahrenheit: (Level FAN 0>80 -> Fahrenheit)

MenuLabelSM1=Smart Mode Very Cool/ Label for Icon Menu, must be terminated by '/'
MenuLabelSM1=Smart Mode Cool/ Label for Icon Menu, must be terminated by '/'

Level=100 0
Level=120 1
Level=130 3
Level=140 7
Level=50 0
Level=60 1
Level=70 2
Level=80 3
Level=90 7


//optional 2nd profile very special for 'sonny'
//if you dont use, deactivate following lines with '//'

MenuLabelSM2=Smart Mode Warmer/ Label for Icon Menu, must be terminated by '/'
Level2=150 0
Level2=160 1
Level2=170 3
Level2=180 7
MenuLabelSM2=Smart Mode Silent/ Label for Icon Menu, must be terminated by '/'
Level2=58 0
Level2=68 1
Level2=80 2
Level2=85 3
Level2=90 7


// IconColorFan=1 digital Icon will turn green while fan is running.
// IconColorFan=1 Digitales Icon wird gr�n w�hrend der L�fter l�uft.
// IconColorFan=1 Digitales Icon wird grün während der Lüfter läuft.

IconColorFan=1

Expand All @@ -307,19 +305,19 @@ IconColorFan=1
// If set to zero fan level 64 acts as emergency level without hysteresis,
// fan will run till level64 temp is reached again (pulsing fan can happen).
//
// DE: Lev64Norm=1 : Fan level 64 arbeitet mit Hysterese, L�fter l�uft,
// bis n�chst tieferer level erreicht wird. L�fter pulsiert nicht.
// Falls Lev64Norm=0 gesetzt, arbeitet level 64 als Notfallk�hlung oberhalb
// der Temperatur von level 64. Ein Pulsieren des L�fters ist m�glich.
// DE: Lev64Norm=1 : Fan level 64 arbeitet mit Hysterese, Lüfter läuft,
// bis nächst tieferer level erreicht wird. Lüfter pulsiert nicht.
// Falls Lev64Norm=0 gesetzt, arbeitet level 64 als Notfallkühlung oberhalb
// der Temperatur von level 64. Ein Pulsieren des Lüfters ist möglich.

Lev64Norm=1

// Program exits manual mode and switches to smart mode with last chosen
// profile, if this temp (degrees Centigrade or Fahrenheit) is achieved.
// default= 80 degrees Centigrade / 176 degrees Fahrenheit.

// Das Program verl�sst den manual mode und schaltet auf smart mode mit
// letztem gew�hltem Profil, wenn diese Temperatur erreicht ist.
// Das Program verlässt den manual mode und schaltet auf smart mode mit
// letztem gewähltem Profil, wenn diese Temperatur erreicht ist.
// default= 80 Grad Celsius / 176 Grad Fahrenheit.

ManModeExit=162 Fahrenheit
ManModeExit=75
2 changes: 1 addition & 1 deletion fancontrol/fancontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@



#define FANCONTROLVERSION "0.63 multiHotKey"
#define FANCONTROLVERSION "0.64 dual-fan multiHotKey"

#define WM__DISMISSDLG WM_USER+5
#define WM__GETDATA WM_USER+6
Expand Down

0 comments on commit 38295b7

Please sign in to comment.