Giter Site home page Giter Site logo

tpfanctrl2's Introduction

TPFanCtrl2 App Icon

ThinkPad Fan Control 2, a fan control utility for ThinkPad users running Windows 10/11

About

This is a fork of the original TPFC, and is based on byrnes' dual fan mod. It's updated it to work with two fan devices. It has only been tested on X1 Extreme Gen. 1 and P1 Gen. 4, but it should work on most other dual-fan Thinkpads that are released. The default fan profile prioritizes fan noise, with fans only turning on at 60C. This can be changed by editing tpfancontrol.ini.

Visual Studio 2022 Community was used to build and debug.

Example Photo

Important: This software is released as a public domain software, there is no warranty or promise of bug fixes. The binaries and its source code are provided "as is", and should be used at your own risk. For more information, please refer to http://unlicense.org/.

Please note that I'm very busy with other work for the time being so it'll take a while for me to get to new issues, however please feel free to create pull requests, I will review those as soon as possible.

Requirements

To avoid errors, either install tvicport manually or install the original version of TPFanControl found here (source code here), and run the dual-fan version instead of the original version.

Administration permission is required for the program to be able to control system fan speed.

Windows 10 or 11 is required to run the program. Windows XP, Vista, 7, and 8 may work, but are untested and should not be expected to.

Configuring

You can configure the behaviour of the program by editing the values inside the TPFanControl.ini file that comes with the program,

The TPFanControl.ini file should always be in the same directory as the fancontrol.exe executable file.

Example of configurable parameters:

  • Temperature refresh cycle time
  • Start minimized in the taskbar tray
  • Max read errors before the program auto shuts down
  • Log program log to file & log data to CSV file
  • Configure the fan curve in smart mode
  • Configure a second smart mode that is accessable in the tray
  • Temperature threshold to exit the manual mode

Manual Fan Levels

Normal: Advanced:
0 - Off 0 - Off
1 - 30% 50 - 40%
2 - 40% 60 - 60%
3 - 45% 70 - 100%
4 - 50% 80 - 100%
5 - 60%
6 - 65%
7 - 65%
Advanced level value is converted into hex before being read by the EC, the value above is a rough estimate of what to expect
The 0-7 range is intended to be used as the fan levels intended by the manufacture (7 being the highest that the laptop BIOS can go), and to take full advantage of the fan you'll need to enter 0-128 in hex (for example, 128 in hex is 0x80, which is entered as 80).

Additional Information

You can find additional information here on the ThinkPad Wiki: https://thinkwiki.de/TPFanControl.

Building Instructions

Building this program requires Microsoft Visual Studio 2022 Community

The project should have the correct configuration upon opening the project file fancontrol.sln, though you might have to manually copy and paste the .ini file into the Debug folder to test the built program

The project currently builds with the configuration: Debug Win32 (You will need admin permission to run the built program)

Do not build the project without TPFCIcon and TPFCIcon_noballons, they are necessary parts of the application and the main fan control software will not function without them

The source code of spinoff releases of the program (i.e. 2.1.5 B) for different machines are stored within the archive direcotry, you can build them by subsituting the main fancontrol directory with the fancontrol directory of the desiered version. Note that TPFCIcon and TPFCIcon_noballons should stay the same for every release.

Note

If you get Linker Tools Error LNK2026: module unsafe for SAFESEH image when building:

  • Go to Project properties -> Configuration Properties -> Linker -> Advanced
  • Disable option Image has Safe Exception Handlers (No (/SAFESEH:NO)

Running at startup (Not Recommended)

You can choose to run TPFC at startup:

  • Right-click on fancontrol.exe and select copy
  • Press Windows-r or search for run in the start menu
  • Type shell:startup in the run box
  • Right click in the window that opens and select paste shortcut

Note: This won't start TPFC until you reboot.

Uninstall

Delete the folder containing the program and the ini file.

That's it, there's no residual files.

If you added the program to run at startup, you will have to also delete the shortcut from the start up folder.

Known Issues

On single-fan devices, the fan speed will sometimes fail to show up. The problem is in the process of being fixed

Sometimes the fans will fail to sync, with one ramping up and the other not. This will usually fix itself, but to fix it manually, switch to BIOS mode, then switch back to the desired mode

It will also sometimes take a longer time for the speed to update and the fans to spin up. This is caused by EC management for the newer ThinkPad BIOS. There is currently no way around it.

ThinkPad P50

P50 Laptop users should use the 2.1.5B release as the fan control parameters are different, but the temperature is currently broken in the build, so it is recommended to use it in manual mode only

Thinkbooks

Some thinkbook models have different EC address, so the program might not work

Contributing

Please open a pull request and have at lease one review to merge it into main

By doing so, you agree to didicate your contribution to the public domain. In compliance with the Unlicense license, you must agree to the following:

I dedicate any and all copyright interest in this software to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

For more information, please refer to http://unlicense.org/

Licensing

This program is under the Unlicense "license"

This means that the software is released into the public domain, and therefore does not technically have a license

The author claims no copyright, copyleft, license or whatsoever for the program itself. You may use, reuse or distribute its binaries or source code in any desired way or form, Useage of binaries or source shall be entirely and without exception at your own risk.

tpfanctrl2's People

Contributors

mikooomich avatar shuzhengz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tpfanctrl2's Issues

Single Fan Device RPM display

Describe the bug
When on single fan device, the fan RPM does not seem to be working

To Reproduce
Run the program on a single fan device (ThinkPad T460 for example)

Expected behaviour
One RPM is zero and the other one is constantly at 6000

Desktop (please complete the following information):

  • OS: Windows 10 Version 21H1
  • CPU: Intel Core i7-6600U
  • Software release version: 2.1.1
  • Additional hardware information: ThinkPad T460

Incompatibility Lenovo Z13

Hello,

I tried using TPFanCtrl2 to reduce the noise from my Lenovo Z13 (6650 U model, running Win11), but could not get your software running on the system. Whenever I launch the program, I get the error message "failed to read FanSpeedByte from EC".
failed to read

On a few other other issue threads, I saw that it was recommended to try a few of the previous versions, and found v0.62 of TPFanControl to be working - unfortunately, it only controls one of the two fans.

After downloading RWeverything, I checked the embedded controller during a low-load benchmark using a hard 9W limit and found 0x85 (if I understood the notation correctly, value 644F) to control at least one of the fans. During the benchmark, TPFanControl was not on the system, and both fans were running at a low speed.
with rweverything 9wbenchmark

Here is also a screenshot of the EC with the fans off during idle.
with rweverything idle

Can you please help me to get the software working? I'm happy to provide you with additional data to the best of my abilities. ^^

Thinkpad X1 Carbon Gen 9 - wrong sensor

It seems wrong sensor is used to mesure CPU temperature with X1 carbon gen 9:

изображение

So in "smart mode" with settings like

Level=44 0 
Level=45 1 
Level=46 2 
Level=48 5 
Level=50 7 

it's always run at speed 7 while real cpu temperature is 42.

X1 carbon gen 9 with I7 - 20XW005TRT
Latest BIOS - N32ET75W 1.51
Latest Windows 10 Pro
Latest TPFanCtrl2

How to fix it?

Set different thresholds for different sensors (and ideally separately control the speed of different fans)

Problem : conflicting algorithm between CPU and GPU

Personal scenario : I own a P16 Gen 1 with i7-12850HX CPU + nvidia A3000 GPU. The CPU can easily go to 100°. The GPU will never go further 70° and gets (thermal) throttled earlier.

This forces me to choose between 2 options:

  1. optimize parameters for CPU:
    Level=56 0, Level=65 1, Level=75 2, Level=80 3, Level=85 4, Level=90 5, Level=95 6, Level=97 7
    which means GPU will constantly thermal throttle as fan(s) will never go above 1based on GPU temp (unless the CPU as well gets warm)
  2. optimize parameters for GPU meaning that even when the CPU is not working/heating, fans will turn uselessly (unless the GPU is under heavy load) fast:
    Level=45 0, Level=50 1, Level=53 2, Level=57 3, Level=60 4, Level=63 5, Level=65 6, Level=67 7
    meaning that as soon as the CPU does something, fans will spin up at highest speed

Proposed solution:
define levels by (at least 2) sensor with Level CPU GPU speed syntax:
Level=56 45 0
Level=65 60 1
Level=75 53 2
[...]
Level=97 67 7

or even better to independently set fans' speeds based on separate sensors:
CPU_Level=56 0, CPU_Level=65 1, CPU_Level=75 2, CPU_Level=80 3, CPU_Level=85 4, CPU_Level=90 5, CPU_Level=95 6, CPU_Level=97 7
GPU_Level=45 0, GPU_Level=50 1, GPU_Level=53 2, GPU_Level=57 3, GPU_Level=60 4, GPU_Level=63 5, GPU_Level=65 6, GPU_Level=67 7

Thx!

User Friendly

Be more user friendly

  • More simple manual mode values
  • Less info as an option
  • Have the log more readable

Fans fail to sync

Sometimes the fans will fail to sync, with one ramping up and the other not.

This will usually fix itself, but sometimes it doesn't

Currently the workaround is to fix it manually by switch to BIOS mode, then switch back to the desired mode

Deprecation

Deprecation on libraries and external packages after switing to Visual Studio 2022

Fans not spinning fast enough at full load

Problem:

the fan doesn't speed up, I can't switch to manual mode, when I select it it sends me back to smart mode
Log

[27.06.2023 20:25:33] Current Config:
[27.06.2023 20:25:33]   Active= 2, Cycle= 5, FanBeep= 0 0, MaxReadErrors= 10
[27.06.2023 20:25:33]   IconLevels= 65 75 80, NoExtSensor= 0, Lev64Norm= 1
[27.06.2023 20:25:33]   Log2File= 0, Log2csv= 0, ShowAll= 0, IconColorFan= 1
[27.06.2023 20:25:33]   Levels= 50° C -> 0,  60° C -> 1,  70° C -> 2,  80° C -> 4,  90° C -> 7
[27.06.2023 20:25:33]   SensorOffset1-12= 0 0 0 0 0 0 0 0 0 0 0 0 ° C
[27.06.2023 20:25:33]   IgnoreSensors= no5, ProcessPriority= 2, IconCycle= 1
[27.06.2023 20:25:33]   BluetoothEDR= 0, NoWaitMessage= 1, ShowBiasedTemps= 1
[27.06.2023 20:25:33]   ManModeExit= 78, SecWinUptime= 0, SecStartDelay= 0

[27.06.2023 20:25:33] Windows uptime since boot 6233 sec., SecWinUptime= 0 sec.
[27.06.2023 20:25:34] Change Mode from BIOS->Smart, recalculate fan speed
[27.06.2023 20:25:35] Fan: 0x80 / Switch: 87° C (87; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;)
[27.06.2023 20:25:35] Smart: Set fan control to 0x04, Result: [i=0] OK
[27.06.2023 20:27:00] Change Mode from Smart->Manual, setting fan speed
[27.06.2023 20:27:00] Fan: 0x04 / Switch: 88° C (88; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;)
[27.06.2023 20:27:00] Manual: Set fan control to 0x00, Result: [i=0] OK
[27.06.2023 20:27:01] Change Mode from Manual->Smart, recalculate fan speed
[27.06.2023 20:27:02] Fan: 0x00 / Switch: 88° C (88; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;)
[27.06.2023 20:27:02] Smart: Set fan control to 0x04, Result: [i=0] OK
[27.06.2023 20:27:30] Fan: 0x04 / Switch: 90° C (90; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0;)
[27.06.2023 20:27:30] Smart: Set fan control to 0x07, Result: [i=0] OK

Screenshots
image

Desktop info

  • OS: Windows 10 Version 22H2
  • CPU Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz 2.40 GHz
  • BIOS version 1.46
  • Software release version [e.g. 2.0.0]
  • Thinkpad W520

version https://github.com/Shuzhengz/TPFanCtrl2/releases/tag/2.1.5

Config Editor

A way to edit the configs inside the program instead of messing with the .ini

exe file to download

Hello!

I'm suffering from high fan speed at low (45-50 C) temperatures on my Lenovo Carbon X1 Gen 10 when charging. I would like to make my fan start at higher temps. I have found your repo with source code and do not know how to make it work on my PC. I have found only original exe on this link (https://sourceforge.net/projects/tp4xfancontrol/). Somehow it made my laptop loose its battery and I hardly recovered it :) And it was not the case of two fans laptops as I have. It was updated as far as 2015.

Do you have any place where one can find .exe files from source or any "short-way" to make .exe file by myself

Thank you!

ThinkPad P50 blackscreen

hi!
Got an issue with my P50. If i run tpfc on discrete gpu mode the screen goes black and never recovers. If i run it in hybrid mode the discrete gpu crashes and completely disappears from device manager leaving no trace. If i disable dgpu in devmanager, run tpfc and then try to enable dgpu i get error 31 (windows cannot load drivers for this device). This issue persist with every dual fan version of tpfc i found on github and regardless the OS version. tvicport is installed, BIOS is the latest version (1.67), and ive tried OS versions from W10 1507 up to the latest insider W11 22H2. Im running W11 insider 22H2 currently.
Thank you in advance

Thinkpad Yoga X1 gen 6 fan speed level

First of all: This version of the program works perfectly fine on the Thinkpad Yoga X1 gen 6 :) At least for my purpose.

In some cases I want the fan to be on max all the time, when doing some intensive tasks. (Using noise cancelling headphones anyway)

I noticed that setting the fan speed to 7 does not increase the speed much. Value 127 does set the fan speed to max though.

Not sure what the reason is but I wanted to share this here in case it helps anyone.

(Not really a bug, but could be improved in the program probably)

TPFanCtrl2 on X1 Extreme Gen 3

Hello,

Some discussion regarding using TPFanCtrl2 on an X1 Extreme Gen 3 here:

https://forums.lenovo.com/t5/ThinkPad-X-Series-Laptops/ThinkPad-X1-Extreme-Gen-3-fans-always-on/m-p/5107024?page=1#5471879

Note the messages 'failed to read TEMP1 byte from EC' in the log:

image

It never seems to drop to fan level 0 when in smart mode, even if the system load is very low.

If I set it to 0 in manual mode, the fans do indeed spin down. (It reverts to smart mode if the temperature goes up.)

Thanks for TPFanCtrl2!

Speed RPM is not displayed

Thinkpad X61, Windows 7 x64, TVicPort 4.1

Dear @Shuzhengz, let's compare the official TPFC 0.63 output with the output of your fork TPFC 2.1.5. As you can see, the laptop's fan is controlled just fine, but its RPM is not displayed, alas. Perhaps you could be so kind to invent some tweak to make it work again?

image image

TVicPort dll

Add .dll for TVicPort into the release package so no need to install separate application

ADSR (Attack, Decay, Sustain, Release)

Request not related to a problem, just an optimization : would it be possible to add a customizable fallback threshold/duration ?

example:
Level= Temperature FanSpeed Duration Delay
Level=56 0 1 0
Level=65 1 1 0
Level=75 2 2 1
Level=80 3 3 1
Level=85 4 4 2
Level=90 5 4 2
Level=95 6 5 3
Level=97 7 5 3

Level=T X Y Z meaning (with examples from last level): If temperature gets higher or equal to T (97), set fan speed to X (7) (nothing new here). If it stays at this level for at least Y (5) seconds, keep fan at current speed for Z (3) seconds even if the temp goes down to X of previous level (95).

This would allow for more efficient control differentiating behavior between spikes/sustained load by making the fans drop speed faster after just a quick spike or stay longer at faster speed when the spike was negative during a long cycle (in that case slowing down the fan speed would just negatively impact cooling down the xPU).

Hope the explanation is clear enough :)

Lower fan speed options

Hello, I have an X1 Yoga 7th Gen with the i7-1260P processor and it seems that even on its lowest setting the fan spins at around 5k RPM and is easily audible in a quiet room. Would it be possible to set lower RPM values? I believe a slower fan speed could keep the CPU cool under low loads without being audible. As it is I wait until 70C to turn the fans on and then they quickly cool the CPU back to the 40C range. Being able to spin the fans slowly and silently should stabilize the CPU temp and keep the system quiet.

Ideally maybe go for 1k RPM and then move up from there. Perhaps with more steps than 7 or have the 7 "standard" steps fall in above the slower ones.

Being able to lock the fans on speed 1 is still an improvement over Lenovo's logic. It appears to try to keep the CPU in the 40C range at all times spinning up the fans to high speed quickly.

Lenovo P50 Blacksreen

Hi, I have a Lenovo P50 Type 20EQ. With Specs i7-6820HQ, 32GB DDR4 2133mhz, Quadro M1000M Graphics, W/ Intel HD Graphics 530. I also have the latest BIOS update installed. So If I run TPFANCTRL, with discrete GPU only, the laptop goes to a black screen ( I am running Windows 11 Pro) If I try Remotedesktop, as the laptop is still on with the blackscreen, a few seconds pass by, on remote desktop seem's its loading something, and says the display componets failed to start. With Hybrid graphics, I get a BSOD Saying something like VIDEO_MEMORY_MANAGEMENT_THERMAL. How do I fix this?

Possible to manually control just one fan?

I'm not sure if this a bug or I'm just holding it wrong, but:

I'm on a P71, which has exactly 2 fans, CPU and GPU (trust me, I've replaced them :D ). TPFC2 sees two fans, "cpu" and "asp". The second one is clearly the GPU fan, in as much as the temp goes up when I run a GPU benchmark. It will sometimes also say there's a "gpu" fan, but its temp is 1oC, so, ignoring that.

The problem I'm having is that I want to test if the GPU fan is actually working, so I want to manually set the speed on that second fan, but no matter what I do it seems to only control the CPU fan.

I can't see any way to say which fan to control in manual mode. Is it supposed to control both fans in that mode, or what?

Thanks for any assistance.

Smart Mode keeps fan on during hibernate

Describe the bug
If running TPFanCtrl2 in Smart Mode and then putting the computer in hibernation mode, the fan keeps running. This in turn means the battery is drained while hibernating.

To Reproduce
Steps to reproduce the behaviour:

  • Start TPFanCtrl2 with default settings.
  • Switch to Smart Mode
  • Make the computer Hibernate

Expected behaviour
Fan is turned off during hibernation, as it is without TPFanCtrl2 running.

Desktop (please complete the following information):

  • OS: Windows 10 Version 21H1
  • CPU Intel Core i7-1165G7
  • BIOS version N32ET75W 1.51
  • Software release version 2.1.2
  • Additional hardware information Thinkpad X1 Carbon Gen 9

UI Problems

UI changes sometimes not applied to the program

Failed to Read on Z16 Gen 1

When I run the program on my Z16 Gen 1 (Windows 11) I get repeated iterations of

8/2/2022 7:03:37 PM] failed to read FanSpeedLowByte 2 from EC
[8/2/2022 7:03:37 PM] failed to read FanSpeedHighByte 2 from EC
[8/2/2022 7:03:37 PM] failed to read FanSpeedLowByte 1 from EC
[8/2/2022 7:03:37 PM] failed to read FanSpeedHighByte 1 from EC

Fans still spinning at low rpms after achiving Level 0

Hi. Every 5-30 changes between Level 1 -> Level 0 fans are still spining, they should be turned off. UI shows 0rpm on both fans, but I can still hear them. Changing mode from Smart to Bios and than to Smart resolve the issue.
My current Smart mode levels:
Level=64 0
Level=65 1
Level=72 2
Level=76 3
Level=80 64

My laptop: Lenovo P52
Bios version 1.51
Windows 11
TPFanCtrl2 version V2.1.5

Edit: But sometimes there is over 0rpm in UI and the log shows that Level 0 was triggered but nothing happened

tpfcd

Thinkpad P16 Gen 1 compatibility

Has anyone managed to use this tool with Thinkpad P16 Gen 1?
I can't get past errors like these:

[18.12.2023 14:24:42] failed to read FanSpeedHighByte 1 from EC
[18.12.2023 14:24:46] failed to read FanSpeedLowByte 2 from EC
[18.12.2023 14:24:46] failed to read FanSpeedHighByte 2 from EC
[18.12.2023 14:24:46] failed to read FanSpeedLowByte 1 from EC
[18.12.2023 14:24:46] failed to read FanSpeedHighByte 1 from EC

I have TVicPort installed, but maybe the wrong one. Download link from this site do not work anymore.
https://www.entechtaiwan.com/dev/port/index.shtm

Thinkbook 13s Gen2 not working

HI,

I understandt, that this is not a clear ThinkPad, but original tpfancontrol 0.62e works without problems, but controls only one fan ( 255 min, 0 - max )

TPFanCtrl2 is not working - writes to log, that it is not possible to read from EC register.

New UI

A new and more modern UI

Fans run high on Sleep

Describe the bug
When I put my X1 Yoga Gen 7 to sleep (either closing the lid or hitting the power button), fans go to a mid-high level after some a minute or two, sometimes immediately. This is not the case in BIOS mode, which only ever raises it to a level 1, as far as I can tell.

Desktop (please complete the following information):

  • OS: Windows 11 Version 23H2
  • CPU Intel Core i7-1270P

Additional context
I offset the pwr setting 20 degrees to have quiet idle and my levels are set as follows:
Level=50 0
Level=53 1
Level=55 2
Level=65 3
Level=67 5
Level=78 7

Thank you!

Automatic startup not (fully) working

Describe the bug
Instructions say to overwrite the original fancontrol with the new one which I've done. But if original fancontrol was setup to run at startup this won't work anymore, most probably as the new exe, compared to the old, requires admin privileges. Same trying the copy/paste method described in the main page of the repo here.

To Reproduce
Install original TPfan to start automatically at boot, replace files with TPFanCtrl2, restart.

Expected behaviour
I'd like to have TPFanControl2 started automatically (achievable through task scheduler) and have the icon available on taskbar (not the case starting it in task scheduler and no way to access the GUI AFAIK). As a workaround I'm going to try to have it started at user logon rather than system-startup. Not ideal but should get the job done.

Desktop (please complete the following information):

  • OS: Win11 Pro 23H2]
  • CPU Intel Core i7-12850HX
  • BIOS version Latest available at time of writing
  • Software release version [e.g. 2.0.0] Lenovo ThinkPad P16 Gen 1

Additional context

garbled characters

Hello, the Chinese system I am using has garbled characters, and the temperature sign has changed to: 癈
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.