Overclock.net banner

41 - 56 of 56 Posts

·
Registered
Joined
·
36 Posts
I just checked in initial support for dumping the fan settings mentioned in my earlier post to my dev branch of aerotools-ng on github. There is a bit more cleanup and documentation changes needed (mainly related to the move from hidraw to hiddev) but if you are interested, you can play now. Here is a dump from my setup:

Code:

Code:
# bin/aerocli /dev/usb/hiddev0
Found 'aquaero 5'
Found 'aquaero 5'
Time (UTC) = Sat Jan 26 09:21:47 2013
Time (local) = Sat Jan 26 01:21:47 2013
Serial number = XXXXX-YYYYY
Firmware version = 1027
Bootloader version = 101
Hardware version = 5600
Uptime = 4 days, 0 hours, 18 minutes, 40 seconds
Total time = 36 days, 5 hours, 15 minutes, 41 seconds
temp1: 23.93 °C
temp25: 39.03 °C
fan1 VRM temp: 39.49 °C
fan1 current:  0.0 mA
fan1 RPM: 643 rpm
fan1 duty cycle: 50.00 %
fan1 voltage: 5.95 V
fan2 VRM temp: 39.49 °C
fan2 current:  0.0 mA
fan2 RPM: 0 rpm
fan2 duty cycle: 100.00 %
fan2 voltage: 11.90 V
fan3 VRM temp: 38.11 °C
fan3 current:  0.0 mA
fan3 RPM: 0 rpm
fan3 duty cycle: 100.00 %
fan3 voltage: 11.96 V
fan4 VRM temp: 38.11 °C
fan4 current:  0.0 mA
fan4 RPM: 0 rpm
fan4 duty cycle: 100.00 %
fan4 voltage: 11.87 V
fan5 VRM temp: 49.10 °C
fan5 current:  0.0 mA
fan5 RPM: 0 rpm
fan5 duty cycle: 100.00 %
fan5 voltage: 12.22 V
fan6 VRM temp: 50.44 °C
fan6 current:  0.0 mA
fan6 RPM: 0 rpm
fan6 duty cycle: 100.00 %
fan6 voltage: 12.21 V
fan7 VRM temp: 48.50 °C
fan7 current:  0.0 mA
fan7 RPM: 0 rpm
fan7 duty cycle: 100.00 %
fan7 voltage: 12.30 V
flow1: 0.0 l/h
flow2: 0.0 l/h
flow3: 0.0 l/h
flow4: 0.0 l/h
flow5: 0.0 l/h
flow6: 0.0 l/h
flow7: 0.0 l/h
flow8: 0.0 l/h
flow9: 0.0 l/h
flow10: 0.0 l/h
flow11: 0.0 l/h
flow12: 0.0 l/h
flow13: 0.0 l/h
flow14: 0.0 l/h
CPU1 temp: 40.04 °C
level1: 0.00 %
level2: 0.00 %
level3: 0.00 %
level4: 0.00 %

------Settings------
fan1 minimum RPM: 450 rpm
fan1 maximum RPM: 2000 rpm
fan1 minimum duty cycle: 41.67 %
fan1 maximum duty cycle: 50.00 %
fan1 startboost duty cycle: 99.00 %
fan1 startboost duration: 4 seconds
fan1 pulses per revolution: 3
fan1 programmable fuse: 1100 mA
fan2 minimum RPM: 450 rpm
fan2 maximum RPM: 2000 rpm
fan2 minimum duty cycle: 35.00 %
fan2 maximum duty cycle: 100.00 %
fan2 startboost duty cycle: 100.00 %
fan2 startboost duration: 2 seconds
fan2 pulses per revolution: 2
fan2 programmable fuse: 1000 mA
fan3 minimum RPM: 450 rpm
fan3 maximum RPM: 2000 rpm
fan3 minimum duty cycle: 35.00 %
fan3 maximum duty cycle: 100.00 %
fan3 startboost duty cycle: 100.00 %
fan3 startboost duration: 2 seconds
fan3 pulses per revolution: 2
fan3 programmable fuse: 1000 mA
fan4 minimum RPM: 450 rpm
fan4 maximum RPM: 2000 rpm
fan4 minimum duty cycle: 35.00 %
fan4 maximum duty cycle: 100.00 %
fan4 startboost duty cycle: 100.00 %
fan4 startboost duration: 2 seconds
fan4 pulses per revolution: 2
fan4 programmable fuse: 1000 mA
fan5 minimum RPM: 450 rpm
fan5 maximum RPM: 2000 rpm
fan5 minimum duty cycle: 35.00 %
fan5 maximum duty cycle: 100.00 %
fan5 startboost duty cycle: 100.00 %
fan5 startboost duration: 2 seconds
fan5 pulses per revolution: 2
fan5 programmable fuse: 1000 mA
fan6 minimum RPM: 450 rpm
fan6 maximum RPM: 2000 rpm
fan6 minimum duty cycle: 35.00 %
fan6 maximum duty cycle: 100.00 %
fan6 startboost duty cycle: 100.00 %
fan6 startboost duration: 2 seconds
fan6 pulses per revolution: 2
fan6 programmable fuse: 1000 mA
fan7 minimum RPM: 450 rpm
fan7 maximum RPM: 2000 rpm
fan7 minimum duty cycle: 35.00 %
fan7 maximum duty cycle: 100.00 %
fan7 startboost duty cycle: 100.00 %
fan7 startboost duration: 2 seconds
fan7 pulses per revolution: 2
fan7 programmable fuse: 1000 mA
fan8 minimum RPM: 450 rpm
fan8 maximum RPM: 2000 rpm
fan8 minimum duty cycle: 35.00 %
fan8 maximum duty cycle: 100.00 %
fan8 startboost duty cycle: 100.00 %
fan8 startboost duration: 2 seconds
fan8 pulses per revolution: 2
fan8 programmable fuse: 1000 mA
fan9 minimum RPM: 450 rpm
fan9 maximum RPM: 2000 rpm
fan9 minimum duty cycle: 35.00 %
fan9 maximum duty cycle: 100.00 %
fan9 startboost duty cycle: 100.00 %
fan9 startboost duration: 2 seconds
fan9 pulses per revolution: 2
fan9 programmable fuse: 1000 mA
fan10 minimum RPM: 450 rpm
fan10 maximum RPM: 2000 rpm
fan10 minimum duty cycle: 35.00 %
fan10 maximum duty cycle: 100.00 %
fan10 startboost duty cycle: 100.00 %
fan10 startboost duration: 2 seconds
fan10 pulses per revolution: 2
fan10 programmable fuse: 1000 mA
fan11 minimum RPM: 450 rpm
fan11 maximum RPM: 2000 rpm
fan11 minimum duty cycle: 35.00 %
fan11 maximum duty cycle: 100.00 %
fan11 startboost duty cycle: 100.00 %
fan11 startboost duration: 2 seconds
fan11 pulses per revolution: 2
fan11 programmable fuse: 1000 mA
fan12 minimum RPM: 450 rpm
fan12 maximum RPM: 2000 rpm
fan12 minimum duty cycle: 35.00 %
fan12 maximum duty cycle: 100.00 %
fan12 startboost duty cycle: 100.00 %
fan12 startboost duration: 2 seconds
fan12 pulses per revolution: 2
fan12 programmable fuse: 1000 mA
 

·
Registered
Joined
·
36 Posts
Over the past week I did a bunch of cleanup work on aerotools-ng, added a utility to export the sensor data to SNMP and wrote a Cacti template to use it. Here are some sample images from my system:








 

·
Registered
Joined
·
36 Posts
Jin Tu,

Amazing work!

Though I am having issues running your util.
When I run it it does not do anything.
It just null.
Any ideas?
TIA!
 

·
Registered
Joined
·
36 Posts
Quote:
Originally Posted by 1nfinit0 View Post

Jin Tu,

Amazing work!

Though I am having issues running your util.
When I run it it does not do anything.
It just null.
Any ideas?
TIA!
Did you pull my latest code, or is this a different/older version?

I will need some more information on what your setup is, your hiddev/hidraw device permissions, any issues compiling, etc...
 

·
Registered
Joined
·
36 Posts
lynix committed a bunch of changes to his main branch of aerotools-ng over the weekend. The most notable of which is auto-discovery. You no longer need to specify the /dev/usb/hiddev? device on the aerocli command line! This opens up a lot of possibilities, including support for multiple devices.

Current work in the pipeline:
  • Additional re-factoring of libaquaero
  • Add default and full output modes to aerocli.
  • Add additional device info and settings to export full mode.
  • Add support for additional device info and settings to SNMP.
  • Add support for multiple devices.
  • RPC-JSON server
 

·
Registered
Joined
·
36 Posts
Since lynix has been working on the major changes listed in the previous post, I have been focusing on decoding more of the device settings in HID feature report 0xB (11). Some of these were pulled into lynix's main git branch over the weekend, but there is still an outstanding pull request that hasn't been merged yet.

  • Fan data source
  • Fan control mode
  • Language
  • Temperature units
  • Flow units
  • Pressure units
  • Decimal separator
  • Info pages
As always we could use some help decoding the rest of the HID reports and testing/dumps with setups with hardware that neither lynix nor I have (MPS flow, MPS pressure, aqualis XT w/ MPS, Multiswitch, Aquastream)
 

·
Registered
Joined
·
36 Posts
FYI for anyone who has used Aquasuite 2013 and subsequently upgraded to firmware 1028-1030 on their Aquaero 5:

AC moved the addresses of the sensor data in HID input report 0x1 by two bytes which will result in bogus sensor data output from the current main release version of aerotools-ng. I created a new 1028-firmware branch of aerotools-ng to address this which has been reported to work properly, but there are other major changes in this branch which will be part of the next main release, but some are not yet complete.

EDIT: Firmware 1028-1030 support has been rolled into lynix' devel branch. It is still possible to use with firmware 1027 by uncommenting a line in the Makefile, but 1028-1030 is now the default.
 

·
Registered
Joined
·
36 Posts
Updated info on Reports 7 and 10 from USBPcap captures from another project volunteer
thumb.gif


Known reports:

Input 1 = See memory map in post #17 of this thread.
Output 5 = Set time (see here for details)
Output 7 = Set software sensor values
Output 10 = Set device names
Feature 11 = Settings (read/write)

Unknown reports

Input 3 - 7 values. XT touchscreen button pressure?
Output 4 - 1 byte different from feature 8 suggests set/save profiles?
Output 6 - ?
Feature 8 - Aquasuite USB snooping suggests info pages
Output 9 - Same size as input 12
Input 12 - Same size as output 9
 

·
Registered
Joined
·
36 Posts
Updated info on Reports 9 and 12 from USBPcap captures, and report 6 from Sebastian at the AC forums.

Known reports:

Input 1 = See memory map in post #17 of this thread.
Output 5 = Set time (see here for details)
Output 6 - Save settings, "lock, unlock, reset, and other things"
Output 7 = Set software sensor values
Output 9 - Request specified memory range
Output 10 = Set device names
Feature 11 = Settings (read/write)
Input 12 - Multiple reports with contents of of specified memory range (from report 9)

Unknown reports

Input 3 - 7 values. XT touchscreen button pressure?
Output 4 - 1 byte different from feature 8 suggests set/save profiles?
Feature 8 - Aquasuite USB snooping suggests info pages
 

·
Registered
Joined
·
36 Posts
After much hacking, I have finally been able to read out the device names!

It requires sending a report 9 with a specified memory range, then reading out 8 report 12s. The reports are spaced very closely together, and this is somewhat of a non-standard use of HID, so getting something to work was painful. Not to mention that the report 1s are occasionally interleaved in the report 12s so ensuring data integrity of the reports took some work.

Here are the names in the format of array position: name (size)

Code:

Code:
0:F1 (2 bytes)
1:F2 (2 bytes)
2:F3 (2 bytes)
3:F4 (2 bytes)
4:exit (4 bytes)
5:Menu (4 bytes)
6:back (4 bytes)
7:cancel (6 bytes)
8:learn (5 bytes)
9:dummy (5 bytes)
10:dummy (5 bytes)
11:dummy (5 bytes)
12:dummy (5 bytes)
13:dummy (5 bytes)
14:dummy (5 bytes)
15:dummy (5 bytes)
16:Sensor 1t (9 bytes)
17:Sensor 2 (8 bytes)
18:Sensor 3 (8 bytes)
19:Sensor 4 (8 bytes)
20:Sensor 5 (8 bytes)
21:Sensor 6 (8 bytes)
22:Sensor 7 (8 bytes)
23:Sensor 8 (8 bytes)
24:poweradjust 1 (13 bytes)
25:poweradjust 2 (13 bytes)
26:poweradjust 3 (13 bytes)
27:poweradjust 4 (13 bytes)
28:poweradjust 5 (13 bytes)
29:poweradjust 6 (13 bytes)
30:poweradjust 7 (13 bytes)
31:poweradjust 8 (13 bytes)
32:Software sensor 1t (18 bytes)
33:Software sensor 2t (18 bytes)
34:Software sensor 3t (18 bytes)
35:Software sensor 4t (18 bytes)
36:Software sensor 5t (18 bytes)
37:Software sensor 6t (18 bytes)
38:Software sensor 7t (18 bytes)
39:Software sensor 8t (18 bytes)
40:Virtual sensor 1t (17 bytes)
41:Virtual sensor 2t (17 bytes)
42:Virtual sensor 3t (17 bytes)
43:Virtual sensor 4t (17 bytes)
44:MPS 1 external (14 bytes)
45:MPS 1 internal (14 bytes)
46:MPS 2 external (14 bytes)
47:MPS 2 internal (14 bytes)
48:MPS 3 external (14 bytes)
49:MPS 3 internal (14 bytes)
50:MPS 4 external (14 bytes)
51:MPS 4 Internal (14 bytes)
52:aquastream 1 (12 bytes)
53:aquastream 2 (12 bytes)
54:Sensor 39 (9 bytes)
55:Sensor 40 (9 bytes)
56:Sensor 41 (9 bytes)
57:Sensor 42 (9 bytes)
58:Sensor 43 (9 bytes)
59:Sensor 44 (9 bytes)
60:Fan amplifier 1t (16 bytes)
61:Fan amplifier 2t (16 bytes)
62:Fan amplifier 3t (16 bytes)
63:Fan amplifier 4t (16 bytes)
64:Fan amplifier 5t (16 bytes)
65:Fan amplifier 6 (15 bytes)
66:Fan amplifier 7 (15 bytes)
67:Fan amplifier 8 (15 bytes)
68:Fan amplifier 9 (15 bytes)
69:Fan amplifier 10 (16 bytes)
70:Fan amplifier 11 (16 bytes)
71:Fan amplifier 12 (16 bytes)
72:aquaero CPU (11 bytes)
73:Sensor 58 (9 bytes)
74:Sensor 59 (9 bytes)
75:Sensor 60 (9 bytes)
76:Sensor 61 (9 bytes)
77:Sensor 62 (9 bytes)
78:Sensor 63 (9 bytes)
79:Sensor 64 (9 bytes)
80:Fan 1t (6 bytes)
81:Fan 2t (6 bytes)
82:Fan 3t (6 bytes)
83:Fan 4t (6 bytes)
84:Fan 5t (6 bytes)
85:Fan 6t (6 bytes)
86:Fan 7t (6 bytes)
87:Fan 8 (5 bytes)
88:Fan 9 (5 bytes)
89:Fan 10 (6 bytes)
90:Fan 11 (6 bytes)
91:Fan 12 (6 bytes)
92:Flow 1t (7 bytes)
93:Flow 2t (7 bytes)
94:Flow 3t (7 bytes)
95:Flow 4t (7 bytes)
96:Flow 5t (7 bytes)
97:Flow 6 (6 bytes)
98:Flow 7 (6 bytes)
99:Flow 8 (6 bytes)
100:Flow 9 (6 bytes)
101:Flow 10 (7 bytes)
102:Flow 11 (7 bytes)
103:Flow 12 (7 bytes)
104:Flow 13 (7 bytes)
105:Flow 14 (7 bytes)
106:Profile 1 (9 bytes)
107:Profile 2 (9 bytes)
108:Profile 3 (9 bytes)
109:Profile 4 (9 bytes)
110:aquastream xt 1 (15 bytes)
111:aquastream xt 2 (15 bytes)
112:multiswitch 1 (13 bytes)
113:multiswitch 2 (13 bytes)
114:Target value 1 (14 bytes)
115:Target value 2 (14 bytes)
116:Target value 3 (14 bytes)
117:Target value 4 (14 bytes)
118:Target value 5 (14 bytes)
119:Target value 6 (14 bytes)
120:Target value 7 (14 bytes)
121:Target value 8 (14 bytes)
122:Curve controller 1t (19 bytes)
123:Curve controller 2 (18 bytes)
124:Curve controller 3 (18 bytes)
125:Curve controller 4 (18 bytes)
126:Two point 1 (11 bytes)
127:Two point 2 (11 bytes)
128:Two point 3 (11 bytes)
129:Two point 4 (11 bytes)
130:Two point 5 (11 bytes)
131:Two point 6 (11 bytes)
132:Two point 7 (11 bytes)
133:Two point 8 (11 bytes)
134:Two point 9 (11 bytes)
135:Two point 10 (12 bytes)
136:Two point 11 (12 bytes)
137:Two point 12 (12 bytes)
138:Two point 13 (12 bytes)
139:Two point 14 (12 bytes)
140:Two point 15 (12 bytes)
141:Two point 16 (12 bytes)
142:Preset value 1 (14 bytes)
143:Preset value 2 (14 bytes)
144:Preset value 3 (14 bytes)
145:Preset value 4 (14 bytes)
146:Preset value 5 (14 bytes)
147:Preset value 6 (14 bytes)
148:Preset value 7 (14 bytes)
149:Preset value 8 (14 bytes)
150:Power output 1t (15 bytes)
151:Power output 2t (15 bytes)
152:Normal operation (16 bytes)
153:Warning (7 bytes)
154:Alarm (5 bytes)
155:Alarm/Warning 4 (15 bytes)
156:Alarm/Warning 5 (15 bytes)
157:Alarm/Warning 6 (15 bytes)
158:Alarm/Warning 7 (15 bytes)
159:Alarm/Warning 8 (15 bytes)
160:aquaero 5 (9 bytes)
161:Fill level 1 (12 bytes)
162:Fill level 2 (12 bytes)
163:Fill level 3 (12 bytes)
164:Fill level 4 (12 bytes)
165:Pressure 1 (10 bytes)
166:Pressure 2 (10 bytes)
167:Pressure 3 (10 bytes)
168:Pressure 4 (10 bytes)
169:Humidity 1 (10 bytes)
170:Humidity 2 (10 bytes)
171:Humidity 3 (10 bytes)
172:Humidity 4 (10 bytes)
173:Water quality 1 (15 bytes)
174:Water quality 2 (15 bytes)
175:Water quality 3 (15 bytes)
176:Water quality 4 (15 bytes)
177:mps D5 - 1 (10 bytes)
178:mps D5 - 2 (10 bytes)
179:mps D5 - 3 (10 bytes)
180:mps D5 - 4 (10 bytes)
 

·
Registered
Joined
·
2,860 Posts
Subbed!
biggrin.gif
 

·
10 year OCN Vet
Joined
·
3,421 Posts
Awesome thread! and a great example of how The Bazaar is still superior to The Cathedral and why it always will be. Computers are about code. Code is written by programmers. Open Source is friendly to programmers not bound by contract (and many who are). Therefore, in a rapidly changing environment, Open Source has an advantage that proprietary can never match. Proprietary == Lockdown and that is unwieldy in a rapid change environment.

It will always be true, more often than not, that "with enough eyes, all bugs are shallow".
 
41 - 56 of 56 Posts
Top