I'd wanted an rack-mounted Alpha for a little while, and recently bought an HP AlphaServer DS20L from Ebay. I installed NetBSD 6.1.1 on it and noticed in dmesg that the ALI7101 SMBus (i²c) controller wasn't configured. Adding:

# Acer Labs M7101 SMBus controller
alipm* 	at pci? dev ? function ?
iic* 	at alipm?
    

to the kernel configuration and rebuilding gave me an i²c bus, but no devices. NetBSD has the i2cscan utility, which allows scanning of some i²c buses for devices. Running this gave me the following output:

/dev/iic0: found device at 0x23
/dev/iic0: found device at 0x2c
/dev/iic0: found device at 0x2d
/dev/iic0: found device at 0x2e
/dev/iic0: found device at 0x2f
/dev/iic0: found device at 0x38
/dev/iic0: found device at 0x4e
/dev/iic0: found device at 0x51
/dev/iic0: 8 devices found
    

Looking on the system board with a magnifying glass, I was able to identify Philips PCF8574 I/O controller and Philips PCF8582C EEPROM chips. Also, by searching for typical addresses, I guessed that the PCF8574 was at address 0x23, but I wasn't sure what the other devices were.

It's simple to modify i2cscan to also read or write bytes, so I tried reading register values in the i²c devices to try and work out what kind of chips they were. Beware! It's possible to lock up the system by doing this. I managed to do that a few times, and also ended up resetting part of the NVRAM and setting the System Fail LED to be on continuously.

After searching for a list of DS20L i²c devices, I came across an OpenBSD 3.9 dmesg showing their lmenv driver attaching at addresses 0x2c to 0x2f. It was fairly simple to port this to NetBSD. The DS20L dmesg is now:

Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 6.99.24 (GENERIC-$Revision: 1.353 $) #15: Mon Oct 14 19:59:46 BST 2013
        root@orion.coris.org.uk:/usr/obj/alpha/usr/src/sys/arch/alpha/compile/DS20L
hp AlphaServer DS20L 833 MHz, s/n 0321700494
8192 byte page size, 2 processors.
total memory = 1024 MB
(2808 KB reserved for PROM, 1021 MB used by NetBSD)
avail memory = 995 MB
mainbus0 (root)
cpu0 at mainbus0: ID 0 (primary), 21264B-4
cpu0: Architecture extensions: 0x1307<PAT,MVI,CIX,FIX,BWX>
cpu1 at mainbus0: ID 1, 21264B-4
cpu1: processor off-line; multiprocessor support not present in kernel
tsc0 at mainbus0: 21272 Core Logic Chipset, Cchip rev 0
tsc0: 4 Dchips, 1 memory bus of 32 bytes
tsc0: arrays present: 1024MB (split), 0MB, 0MB, 0MB, Dchip 0 rev 1
tsp0  at tsc0
pci0 at tsp0 bus 0
ahc0 at pci0 dev 3 function 0: Adaptec aic7892 Ultra160 SCSI adapter
ahc0: interrupting at dec 6600 irq 16
ahc0: aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
scsibus0 at ahc0: 16 targets, 8 luns per target
fxp0 at pci0 dev 4 function 0: i82550 Ethernet (rev. 0x0c)
fxp0: interrupting at dec 6600 irq 20
fxp0: Ethernet address 00:02:56:00:22:04
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ahc1 at pci0 dev 5 function 0: Adaptec 3960D Ultra160 SCSI adapter
ahc1: interrupting at dec 6600 irq 24
ahc1: aic7899: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
scsibus1 at ahc1: 16 targets, 8 luns per target
ahc2 at pci0 dev 5 function 1: Adaptec 3960D Ultra160 SCSI adapter
ahc2: interrupting at dec 6600 irq 25
ahc2: aic7899: Ultra160 Wide Channel B, SCSI Id=7, 32/253 SCBs
scsibus2 at ahc2: 16 targets, 8 luns per target
sio0 at pci0 dev 7 function 0: Acer Labs M1533 PCI-ISA Bridge (rev. 0xc3)
aceride0 at pci0 dev 16 function 0: Acer Labs M5229 UDMA IDE Controller (rev. 0xc2)
aceride0: primary channel interrupting at isa irq 14
atabus0 at aceride0 channel 0
aceride0: secondary channel interrupting at isa irq 15
atabus1 at aceride0 channel 1
alipm0 at pci0 dev 17 function 0: 74KHz clock
iic0 at alipm0: I2C bus
lmenv0 at iic0 addr 0x2c: ADM9240 rev 2
lmenv1 at iic0 addr 0x2d: ADM9240 rev 2
lmenv2 at iic0 addr 0x2e: ADM9240 rev 2
lmenv3 at iic0 addr 0x2f: ADM9240 rev 2
isa0 at sio0
lpt0 at isa0 port 0x3bc-0x3bf irq 7
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
com0: console
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
pckbc0 at isa0 port 0x60-0x64
attimer0 at isa0 port 0x40-0x43
pcppi0 at isa0 port 0x61
midi0 at pcppi0: PC speaker
spkr0 at pcppi0
isabeep0 at pcppi0
mcclock0 at isa0 port 0x70-0x71: mc146818 compatible time-of-day clock
attimer0: attached to pcppi0
tsp1 at tsc0
pci1 at tsp1 bus 0
fxp1 at pci1 dev 3 function 0: i82559 Ethernet (rev. 0x08)
fxp1: interrupting at dec 6600 irq 32
fxp1: Ethernet address 00:02:56:00:22:05
inphy1 at fxp1 phy 1: i82555 10/100 media interface, rev. 4
inphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
scsibus0: waiting 2 seconds for devices to settle...
scsibus1: waiting 2 seconds for devices to settle...
scsibus2: waiting 2 seconds for devices to settle...
stray isa irq 15
atapibus0 at atabus1: 2 targets
cd0 at atapibus0 drive 0: <CD-224E, , A.8D> cdrom removable
sd0 at scsibus0 target 0 lun 0: <COMPAQ, BD0186459A, B014> disk fixed
sd0: 17365 MB, 7001 cyl, 20 head, 254 sec, 512 bytes/sect x 35565080 sectors
sd0: sync (25.00ns offset 63), 16-bit (80.000MB/s) transfers, tagged queueing
root on fxp0
    

Running envstat shows:

               Current  CritMax  WarnMax  WarnMin  CritMin  Unit
[lmenv0]
    +2.5Vin:     2.513                                         V
      Vccp1:     1.617                                         V
       +Vcc:     3.317                                         V
  +5Vin/Vcc:     4.922                                         V
     +12Vin:    12.125                                         V
      Vccp2:     1.167                                         V
   External:       N/A
   Internal:    29.000                                     degC
       FAN1:      8823                                      RPM
       FAN2:      8766                                      RPM
[lmenv1]
    +2.5Vin:     2.500                                         V
      Vccp1:     1.645                                         V
       +Vcc:     3.300                                         V
  +5Vin/Vcc:     4.922                                         V
     +12Vin:    12.188                                         V
      Vccp2:     0.352                                         V
   External:       N/A
   Internal:    29.000                                     degC
       FAN1:      8709                                      RPM
       FAN2:      8653                                      RPM
[lmenv2]
    +2.5Vin:     2.513                                         V
      Vccp1:     1.673                                         V
       +Vcc:     3.317                                         V
  +5Vin/Vcc:     4.948                                         V
     +12Vin:    12.188                                         V
      Vccp2:     1.252                                         V
   External:       N/A
   Internal:    51.000                                     degC
       FAN1:      8544                                      RPM
       FAN2:      5294                                      RPM
[lmenv3]
    +2.5Vin:     0.000                                         V
      Vccp1:     0.000                                         V
       +Vcc:     3.214                                         V
  +5Vin/Vcc:     5.052                                         V
     +12Vin:    12.188                                         V
      Vccp2:     0.000                                         V
   External:       N/A
   Internal:    40.000                                     degC
       FAN1:      8490                                      RPM
       FAN2:      8083                                      RPM
    

These values agree with the CPU 0, CPU 1, Dimm, and I/O readings, respectively, from the SRM show power -verbose command (although the FAN2 reading on lmenv2 is odd and not displayed by the SRM). The changes have all been committed to -current. Next is to find the sensors for the Riser and PSU, the memory chips, and to turn off the System Fail LED.

Commits

-^- More notes -^-