View Issue Details

IDProjectCategoryView StatusLast Update
0000562SpeedFanHardware supportpublic2008-08-20 23:50
Reporterfhj52 Assigned Toalfredo  
PrioritynormalSeverityblockReproducibilityalways
Status resolvedResolutionfixed 
PlatformAMD Dual OpteronOSMS Windows 2000OS VersionSP4+
Product Version4.28 
Fixed in Version4.36 beta 
Summary0000562: Detection of SMSC EMC6W201 monitoring device fails
DescriptionI have a Gigabyte(GBT) 2CEWH mainboard wand it has both the IT8712F and the SMSC EMC6W201 chips onboard.
ALL monitoring is done by the EMC6W201. The IT87* only handles I/O.

Speedfan finds the IT device and assumes it is to be used. The readings are, as you might imagine, terrible.
Release 4.10 states:
-added preliminary detection for EMC6W201
but I/Speedfan cannot find it. Was it removed?

SpeedFan is completely useless without access to the SMSC device, hence I listed as blocker.

( Sorry, not in Win2k at this time so cannot provide build number. )
Steps To ReproduceInstall speed fan on MS Win2k OS with a system that has both IT* at EMC* devices.
Additional InformationUploaded the datasheet for the EMC6W201. That is the datasheet(PDF:2.5MB), not product brief.
I have heat issues with CPU and my case so need to monitor them. I will assist in any way I can... just contact me.
TagsNo tags attached.
Motherboard Model
Video Card Model

Activities

fhj52

2006-05-18 16:55

reporter   ~0001679

speedfan.exe file version is 4.28.0.152.

fhj52

2006-06-10 07:55

reporter   ~0001758

Is there some way to tell Speedfan to _not_ use the IT8712F chip for monitoring and to use some "custom" file?
After reading the help file, I don't see any option like that but it seems to be the correct place to start. The close approx is to use the /SMBDEBUG switch.
The /SMBDEBUG finds:
[quote]
 - device found at $08
 - device found at $32
 - device found at $33
 - device found at $36
 - device found at $37
 - device found at $52
 - device found at $53
 - device found at $56
 - device found at $57
 - device found at $08
 - device found at $2E
 - device found at $58
 - device found at $59
 - device found at $5A
 - device found at $5B
 - device found at $5C
 - device found at $5D
 - device found at $5E
 - device found at $5F
 - device found at $50
 - device found at $0C
 - device found at $21
 - device found at $2E
[/quote]
and ends up with :
[quote]
Win9x:NO 64Bit:NO GiveIO:YES SpeedFan:YES
I/O properly initialized
Linked ISA BUS at $0290
Linked nVidia nForce4 SMBUS at $5000
Linked nVidia nForce4 SMBUS at $5040
Found nVidia GeForce 7800 GTX
Linked nVidiaI2C0 SMBUS at $3D403E3F
Linked nVidiaI2C1 SMBUS at $3D403637
Linked nVidiaI2C2 SMBUS at $3D405051
INFO : NO SUPPORTED CHIP DETECTED
[/quote]
which is, of course, true but it does not help me.
What happened to the "preliminary detection of the EMC6W201 device" that was placed into the code?

I'll try to give more detail on what each of the "device found" means on the SMSC EMC6W201 after I correlate it...

fhj52

2006-06-10 08:14

reporter   ~0001759

Okay, a quick update. I found that telling SpeedFan not to use the ISA BUS prevents it from using the IT8712F so at least it does not provide wrong sensor info.
It does still provide the HDD temps, very nicely too I will add. :)

fhj52

2006-06-10 08:18

reporter   ~0001760

Here's what it yields now that ISA is nixed:
[quote]
Win9x:NO 64Bit:NO GiveIO:YES SpeedFan:YES
I/O properly initialized
Linked ISA BUS at $0290
Linked nVidia nForce4 SMBUS at $5000
Linked nVidia nForce4 SMBUS at $5040
Found nVidia GeForce 7800 GTX
Linked nVidiaI2C0 SMBUS at $3D403E3F
Linked nVidiaI2C1 SMBUS at $3D403637
Linked nVidiaI2C2 SMBUS at $3D405051
Scanning ISA BUS at $0290...
IT8712F/IT8705F found on ISA at $290
INFO : ISA sensors DISABLED by user
SuperIO Chip=IT8712F
Scanning nForce2 SMBus at $5000...
Address $32 appears to be WRITE ONLY...
Address $33 appears to be WRITE ONLY...
Address $36 appears to be WRITE ONLY...
Address $37 appears to be WRITE ONLY...
Scanning nForce2 SMBus at $5040...
Unknown Winbond2=$FF00 ID=$00 on SMBus at $2E
Scanning I2CNVidia SMBus at $3D403E3F...
Scanning I2CNVidia SMBus at $3D403637...
Scanning I2CNVidia SMBus at $3D405051...
Unknown Winbond2=$FF00 ID=$81 on SMBus at $2E
SMART Enabled for drive 0

[snip the SMART info]

End of detection
Error loading event -->
  CfgVersion=01.0001
  EventsVersion=01.0001
Loaded 0 events
[/quote]

fhj52

2006-06-11 03:06

reporter   ~0001761

A few things to note about the EMC6W201.

It is similar to the SMSC EMC6D* devices in basic functions except it is designed for compatibility with two(2) CPUs. ...
This chip is used on commercially made systems such as the Fujitsu-Siemens Celsius V series so it is not just poor OEM@home builders than can use the SpeedFan for it, if, of course, SpeedFan becomes usable.

I did not find a "Chip ID" register however there is a "Company ID" register as well as a "Stepping/Revison" register. Those are 3E and 3F, respectively.
The value in 3E is just a number to ID the manufacturer of the device.
The value in 3F is broken down into 4 MSbits(the version) and 4 LSbits(the stepping) for identfying the SMSC device. That can identify the device in such a way as to be able to apply code changes to software based upon the revision of the device being used. Both are Read_Only so the values must be hard coded at the factory.( I do not have a clue what it "should" read... )

The chip has two Banks, 0 & 1. Bank0 are registers addreses 80 - FF and Bank 1 have register addresses 180 - 1FF. Bank 1 should be avoided/ignored as it is for SMSC test, etc. Bank 0 contains many configuration items and should be, IMO, mostly avoided/ignored too.
FYI: The Bank is selected via the Bank register, 7F, by setting bit 0 as 00h or 01h. The default value is 00h signifying that Bank 0 is the default. I don't know if it is necessary to write 00 to register 7F, bit 0 before accessing any of the Bank0. (NB: all the other bits are "reserved" so writing 00000000 is AOK ) ...

Almost all of the (important) reading registers are prior to 80h. My best guess here is that a Bank Select is not needed to access those registers.

However, it does appear that one has to write to register 40 to gain read access to any of the SMSC registers and to turn the monitoring function to "on". All of the registers are accessible via setting the START bit 01h in register 40 bit 0. While the START bit is 0, no temp or voltage monitoring is done and the registers have garbage in them.
NB: accurate fan speeds can always be obtained regardless of the value of the START bit.
Register 40 is the Ready/Lock/Start register; 8 bits, four of which are Reserved(bits 7-4); writing to "reserved" bits has no effect on the HW.
As best as I can determine, writing 0000 0001 is all that is needed to make the temp and volt reading registers accessible and valuable. Writing the START bit turns on monitoring and control; Control uses default values for the parameters (which mainly affect the fans' speeds).

NB: bit 0 is START, bit 1 is LOCK, bit 2 is READY, bit 3 is OVRID.
Note that setting the START bit does NOT make any R/W register READ_ONLY.
READY is Read_Only and should always return "1"(...).
The OVRID is always writable and always causes all "PWM" fans to ramp up to full speed(100% duty cycle). Only reason to write 1 to it might be when the CPU temps hit 65*c or so...
Setting the LOCK bit locks the LOCK _and_ START bits _AND_ LOCKS ALL PARAMETERS (Duty Cycles, etc.) TO THE CURRENT VALUES WHICH REMAIN THAT WAY UNTIL POWEROFF: Just say NO! to setting the Lock bit.
It is ASSUMED that SW will set ALL parameters PRIOR to setting the lock bit which is a huge assumption, IMO.


NB: all values above are hex except for the obvious binary

Since information indicates that the START bit has to be set to make the readings accessible/sensible, that may explain why many of the registers are not recognized or have erroneous information obtained/reported by SpeedFan.
Yes/No?

fhj52

2006-06-12 21:08

reporter   ~0001762

Getting TEMPERATURE values from the EMC6W201.

THE readings needed most are in ($5000) SMBus registers(hex):

26, diode 1 temp reading,
27, diode 2 temp reading,
28, diode 3 temp reading,
29, diode 4 temp reading,
2A, diode 5 temp reading, and
2B, Ambient
-- All 6 are needed because which is for what is unknown...
Apparently, GBT uses four of the six to provide 2 CPU temps(CPU0 & CPU1) and 2 Ambient temps(Front and Rear) in the BIOS but I don't know which four. ( Also, it might be possible that there are really 6 monitored temps available ... )

Notably, none of those registers were recognized by SpeedFan but, as mentioned before, perhaps that is because the START bit was not set.
I believe those are on/from the $5000 SMBus but won't know for sure until I can write the register 40h START bit 0 to 1 and read the registers. I think the $5040 SMBus has the control and history functions(recorded low/high values as well as set low/high parameters, duty cycles, etc. )

The info in those registers provides binary equivalents of temperatures from -127*c to 127*c. Clearly, we only need a subset of that.
The temps are one to one base10 correspondence. They are 8-bit, 2's complement, signed numbers.
E.g., here's some equivalents with comments:
0*c == 0000 0000
1*c == 0000 0001
...
25*c == 0001 1001
...
31*c = 0001 1111
...
(NB: Tcase-MIN for E4/E6 stepping except "HE" types is 49*c )
49*c = 0011 0001
...
55*c = 0011 0111
...
(NB: Tcase-MAX is 67*c for E4/E6 Stepping Rev except the "HE" models.)
67*c = 0100 0011
...
(NB: THIS IS THE AMD CONTROL TEMPERATURE for Thermal Trip.
 It essientially means that the Tcase-MAX has been reached/exceeded.
 ** At this point SHUTDOWN is the safest thing to do ** )
70*c = 0100 0110
...
etc.
(NB: the "==" means the DS defined that value. The = are calculated...)
As you can see it simply reports the centigrade temperature in the binary equivalent of the base10 number. The SW will have to convert that to base10 but I suppose that routine is already present in the code.

Any value greater than 127 base10 produces an error. ( and besides, at +127*c the CPU is nothing but Cinders and Ashes.... )


NB: all values are hex except for the obvious binary

 
Alfredo, what else do you need to make the SMSC EMC6W201 accessible and readable for, at least, temperatures?

...

fhj52

2006-06-14 05:45

reporter   ~0001764

Looking over this, somehow I forgot to mention that the ADDRESS of the device is 2Eh ( 0101110b ) according to the info I have.
I did a dump (linux) and got lots of goodies:

#> i2cdump 1 0x2e
No size specified (using byte-data access)

I will probe file /dev/i2c-1, address 0x2e, mode byte
Continue? [Y/n]
     0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
20: c8 b0 bb 64 c0 b3 2d 17 31 1b 16 22 c4 0c 37 0e ???d??-?1??"??7?
30: 52 0e 40 0d 1a 07 80 80 80 00 00 00 00 00 5c b1 R?@??????.....\?
40: 05 00 00 00 00 00 00 00 3e 00 00 ff 00 ff 00 ff ?.......>.......
50: 00 ff 00 ff 00 ff 81 7f 81 7f 81 7f 81 7f 81 7f ......??????????
60: 81 7f ff ff ff ff ff ff ff ff ff ff 00 00 00 ff ??..............
70: 00 ff 00 ff 00 ff 00 ff 00 ff fc 3e 7e 00 00 00 ..........?>~...
80: e2 e2 e2 99 90 cc cc cc 00 00 80 80 80 00 00 00 ????????..???...
90: 23 23 23 23 23 23 64 64 64 64 64 64 44 44 44 94 ######ddddddDDD?
a0: 00 40 80 00 04 04 04 04 2c 2c 2c 00 0a 00 2d 2d .@?.????,,,.?.--
b0: 2d 2d 2d 2d 00 00 00 00 a0 00 05 25 12 ff ff 00 ----....?.?%?...
c0: 00 00 00 00 7f 7f 7f 7f 7f 7f c0 00 00 00 00 00 ....???????.....
d0: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
e0: 00 00 c0 8a 68 00 20 00 1c 00 00 00 00 00 00 00 ..??h. .?.......
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

It's 22:24:24 CDT (UTC-0500) on Tue Jun 13, week 24 in 2006.

The 40h value of 0x05 would correspond to the START bit and READY bit set as 1, while the OVRID and LOCK bits are zero. IF that is the correct address, and info is correct, all that needs to be done is to READ the registers, whiuch allieviates problems writing to possibly the wrong bit and thereby destroying data, etc.
The value of 0x05 makes sense as the state the chip should be in after POST. Could it be a coincidence?

fhj52

2006-06-14 09:30

reporter   ~0001765

I ran some tests. That is the device address and those are the registers.
Is there some way to get SpeedFan to read 2E and the registers so I can start getting temps recorded?

FYI, temps when running programs I usually run:
26 27 28 29 2a 2b Registers @ i2c-2 2E
38 1a 3d 1e 17 26 hex values 02:10:13 CDT
59 29 65 33 25 40 the actual temps *c

as you can see the CPUs are HOT(registers 26 & 28).

Also, as I suspected, the other four registers are active. The two lowest are most likely the readings for "Front" and "Rear" temps but I do not know what the other two are just yet. Most likely would be the nVidia CK* chipsets(nForce Pro 2200 & 2050). I'll have to run some tests with the case open ...later.

fhj52

2006-06-16 04:51

reporter   ~0001770

Using /slowscan lists a lot more registers but SpeedFan still does not find the i2c-1 2E and the "reading" registers in it.
So can one tell SF to scan a specific bus & address? ...I don't find an option like that.

fhj52

2006-06-23 22:14

reporter   ~0001786

I can get the temperatures via a CLI in Linux. With almost nothing running:
#> echo 'CPU0:' ; ./todec `i2cget -y 1 0x2e 0x26`; echo 'CPU1:' ; ./todec `i2cget -y 1 0x2e 0x28`CPU0:
49
CPU1:
54
(todec just converts hex to base 10)

Both of those temps go up to ~ 65*c when the system is busy. VERY bad since the system is normally busy and, even worse, as summer here progresses it is going to be very warm in the room so ambient temp will make cooling harder. :(

Any ideas on how to get the same or better information in MS Win*?

fhj52

2006-07-30 01:58

reporter   ~0001838

Is there some reason why there has been NO RESPONSE to the dozen posts here?

At the very least, a decent person would say no or no not now.

alfredo

2008-08-20 19:24

manager   ~0004036

I really can't understand how I could have left this issue behind!
I'm investigating. I can't see any uploaded datasheet, but I'm looking at the one that I have for the 6w201. Unfortunately, my datasheet reports a different ID for the chip. I'm trying to ask SMSC for updated documents.

alfredo

2008-08-20 19:25

manager   ~0004037

By the way: SpeedFan can use virtually any number of chips. If it finds an IT87xx, that won't block further detections.

alfredo

2008-08-20 22:21

manager   ~0004038

Ok. Another users physically found the EMC6W201 on his motherboard. In a few hour I will add full support for this chip.

alfredo

2008-08-20 23:47

manager   ~0004039

Temperatures, fan speeds and voltages are now properly displayed for the EMC6W201. Feel free to contact me if you want to try the beta.

Issue History

Date Modified Username Field Change
2006-05-11 20:44 fhj52 New Issue
2006-05-18 16:55 fhj52 Note Added: 0001679
2006-06-10 07:55 fhj52 Note Added: 0001758
2006-06-10 08:14 fhj52 Note Added: 0001759
2006-06-10 08:18 fhj52 Note Added: 0001760
2006-06-11 03:06 fhj52 Note Added: 0001761
2006-06-12 21:08 fhj52 Note Added: 0001762
2006-06-14 05:45 fhj52 Note Added: 0001764
2006-06-14 09:30 fhj52 Note Added: 0001765
2006-06-16 04:51 fhj52 Note Added: 0001770
2006-06-23 22:14 fhj52 Note Added: 0001786
2006-07-30 01:58 fhj52 Note Added: 0001838
2008-05-12 14:27 alfredo Status assigned => acknowledged
2008-05-12 14:28 alfredo Category Configuration => Hardware support
2008-08-20 19:24 alfredo Note Added: 0004036
2008-08-20 19:25 alfredo Note Added: 0004037
2008-08-20 22:21 alfredo Note Added: 0004038
2008-08-20 23:47 alfredo Note Added: 0004039
2008-08-20 23:50 alfredo Status acknowledged => resolved
2008-08-20 23:50 alfredo Resolution open => fixed
2008-08-20 23:50 alfredo Fixed in Version => 4.36 beta