vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Now that ipmi(4) and esm(4) on the i386 and amd64 machines are providing many i386 machines with loads of sensors, it is time to catch up and provide them on other machines. Apple's macppc machines have gobs of sensors in them. Actually, it is quite amazing. Apple was obviously an early adopter of i2c devices. i2c is nasty in that you don't know what device is at which address. It is less consistant than the ISA bus. Some newer chips make this easier though. But on the macppc machines, one nice thing is that because of the OF prom we know which devices are where: Here is a piece of dmesg from a G4 DP Xserve. maciic0 at ki2c0 lmenv0 at maciic0 addr 0xad: LM87 rev 6 lmtemp0 at maciic0 addr 0x49: LM75 i2c-hwclock at maciic0 addr 0x65 not configured cereal at maciic0 addr 0xe0 not configured pi2c0 at adb0 maciic1 at pi2c0 pcagpio0 at maciic1 addr 0xa0: 5 inputs 3 outputs gpio0 at pcagpio0: 8 pins pcagpio1 at maciic1 addr 0xa1: 5 inputs 3 outputs gpio1 at pcagpio1: 8 pins pcagpio2 at maciic1 addr 0xa2: 5 inputs 3 outputs gpio2 at pcagpio2: 8 pins pcagpio3 at maciic1 addr 0xa3: 5 inputs 3 outputs gpio3 at pcagpio3: 8 pins pcagpio4 at maciic1 addr 0xa4: 8 inputs gpio4 at pcagpio4: 8 pins ki2c1 at macobio0 offset 0x18000 maciic2 at ki2c1 cereal at maciic2 addr 0xe0 not configured That provides us with these sensors: hw.sensors.0=lmenv0, +2.5Vin, volts_dc, 2.50 V hw.sensors.1=lmenv0, Vccp1, volts_dc, 1.69 V hw.sensors.2=lmenv0, +Vcc, volts_dc, 3.33 V hw.sensors.3=lmenv0, +5Vin/Vcc, volts_dc, 5.08 V hw.sensors.4=lmenv0, +12Vin, volts_dc, 12.19 V hw.sensors.5=lmenv0, Vccp2, volts_dc, 1.60 V hw.sensors.7=lmenv0, Int. Temp., temp, 27.00 degC / 80.60 degF hw.sensors.8=lmenv0, FAN1, fanrpm, 3183 RPM hw.sensors.9=lmenv0, FAN2, fanrpm, 3375 RPM hw.sensors.10=lmtemp0, TEMP, temp, 25.50 degC / 77.90 degF On a G5 DP Xserve we see some different devices: maciic0 at ki2c0 i2c-hwclock at maciic0 addr 0x6a not configured maxtmp0 at maciic0 addr 0x4c: MAX6690 rev 0x9 fcu0 at maciic0 addr 0xaf pcagpio0 at maciic0 addr 0x18: 8 outputs adc0 at maciic0 addr 0x2c cpuid at maciic0 addr 0x50 not configured pcagpio1 at maciic0 addr 0x19: 8 outputs adc1 at maciic0 addr 0x2d cpuid at maciic0 addr 0x51 not configured cereal at maciic0 addr 0xe0 not configured maciic1 at ki2c1 lmenv0 at maciic1 addr 0x2d: LM87 rev 6 lmenv1 at maciic1 addr 0x2e: LM87 rev 6 lmtemp0 at maciic1 addr 0x48: LM75 power-supply-monitor at maciic1 addr 0x4a not configured cereal at maciic1 addr 0xe0 not configured maciic2 at pi2c0 pcagpio2 at maciic2 addr 0xa0: 4 inputs 4 outputs pcagpio3 at maciic2 addr 0xa1: 4 inputs 4 outputs pcagpio4 at maciic2 addr 0xa2: 4 inputs 4 outputs pcagpio5 at maciic2 addr 0xa4: 8 inputs lmtemp1 at maciic2 addr 0xcd: LM75 lmtemp2 at maciic2 addr 0xce: LM75 With an entirely out-of-contro list of sensors: hw.sensors.0=maxtmp0, Internal, temp, 20.88 degC / 69.58 degF hw.sensors.1=maxtmp0, External, temp, 31.12 degC / 88.03 degF hw.sensors.2=fcu0, FAN0, fanrpm, 6500 RPM hw.sensors.3=fcu0, FAN1, fanrpm, 6469 RPM hw.sensors.4=fcu0, FAN2, fanrpm, 6487 RPM hw.sensors.5=fcu0, FAN3, fanrpm, 6494 RPM hw.sensors.6=fcu0, FAN4, fanrpm, 6537 RPM hw.sensors.7=fcu0, FAN5, fanrpm, 6530 RPM hw.sensors.8=fcu0, PWM0, fanrpm, 27 RPM hw.sensors.9=fcu0, PWM1, fanrpm, 27 RPM hw.sensors.10=adc0, Internal, temp, 18.50 degC / 65.30 degF hw.sensors.11=adc0, adc0, raw, 1023 hw.sensors.12=adc0, adc1, raw, 1023 hw.sensors.13=adc0, adc2, raw, 1023 hw.sensors.14=adc0, adc3, raw, 1023 hw.sensors.15=adc1, Internal, temp, 16.75 degC / 62.15 degF hw.sensors.16=adc1, adc0, raw, 1023 hw.sensors.17=adc1, adc1, raw, 1023 hw.sensors.18=adc1, adc2, raw, 1023 hw.sensors.19=adc1, adc3, raw, 1023 hw.sensors.20=lmenv0, +2.5Vin, volts_dc, 2.62 V hw.sensors.21=lmenv0, Vccp1, volts_dc, 1.49 V hw.sensors.22=lmenv0, +Vcc, volts_dc, 3.28 V hw.sensors.23=lmenv0, +5Vin/Vcc, volts_dc, 5.03 V hw.sensors.24=lmenv0, +12Vin, volts_dc, 12.00 V hw.sensors.25=lmenv0, Vccp2, volts_dc, 1.20 V hw.sensors.27=lmenv0, Int. Temp., temp, 25.00 degC / 77.00 degF hw.sensors.28=lmenv0, AIN1, volts_dc, 1.80 V hw.sensors.29=lmenv0, AIN2, volts_dc, 1.45 V hw.sensors.30=lmenv1, +2.5Vin, volts_dc, 2.60 V hw.sensors.31=lmenv1, Vccp1, volts_dc, 3.26 V hw.sensors.32=lmenv1, +Vcc, volts_dc, 3.25 V hw.sensors.33=lmenv1, +5Vin/Vcc, volts_dc, 5.05 V hw.sensors.34=lmenv1, +12Vin, volts_dc, 11.94 V hw.sensors.35=lmenv1, Vccp2, volts_dc, 1.18 V hw.sensors.37=lmenv1, Int. Temp., temp, 16.00 degC / 60.80 degF hw.sensors.38=lmenv1, AIN1, volts_dc, 1.69 V hw.sensors.39=lmenv1, AIN2, volts_dc, 1.50 V hw.sensors.40=lmtemp0, TEMP, temp, 17.00 degC / 62.60 degF hw.sensors.41=lmtemp1, TEMP, temp, 13.50 degC / 56.30 degF hw.sensors.42=lmtemp2, TEMP, temp, 12.50 degC / 54.50 degF The OF tables will actually tell us where each of these devices is (ie. on a processor, before a processor, after the fan of a processor, sitting in the drive bay, in the power supply, etc, etc) and what it maps to, so that we can later on write code to control the speed of the processors and fans based on the temperature feedback we see. We also must one day overhaul the way that sensor information is exported from the kernel, and make sensorsd way more useful. One day we also want to do sensors on machines where there is no OF-supplied mapping for where the sensors live (in physical reality, but also on the rather nasty i2c bus). But there are some solutions to these problems. Some laptops also contain sensors that we support now. In any case, try it out. |