-
-
Notifications
You must be signed in to change notification settings - Fork 360
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
First attempt to add support for Ippon Innova RT 3/1 #2712
Conversation
❌ Build nut 2.8.2.2498-master failed (commit 9495a68c7c by @dvdesolve) |
seems like CI failed because of aspell check. how and what should I add to the dictionary exclusion list? |
Thanks, by Q in queries and parentheses in ASCII numbered answers, this indeed seems like a Megatec Qx variant. For spell checker update, |
Yes, this UPS speaks Q* variant of protocol. It also answers back to the Q1 and some other requests (such as Q2, Q4 and so on). Also I would like to say that I've faced some kind of troubles during writing this protocol dialect. In |
✅ Build nut 2.8.2.2500-master completed (commit b59ed04781 by @dvdesolve) |
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
@dvdesolve : Do you know if "that" documentation can be absorbed back into NUT protocol library, maybe "as is" for international reference or translated to English for another sort of international reference? :) Is that (especially the smaller chapters for other devices) based on NUT docs (so there is no value adding it back) or independent research and bringing in new information? |
According to the author of that webpage and software information about communication protocols was collected by googling, usb and com sniffing, firmware decompiling etc BTW I can help with translation if you want, it's not too hard |
Thanks for the offer, that would be most welcome. The first step should be about checking if documents at https://networkupstools.org/ups-protocols.html, aka https://github.com/networkupstools/nut-website/tree/master/protocols in source form, already contain all of that information, or if there is something new to add. |
…arify that "subdriver" is for Serial-over-USB dialect, and "protocol" is for Qx dialect [networkupstools#2712] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…1 subdriver [networkupstools#2712] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
should that translation/addition be in the same PR or may be I can do it via next PR? |
Another PR (if deemed needed) - separate repo anyway :) |
I've updated the PR with a bit of documentation change, including the inherited mess about "subdriver" terminology in Qx codebase, so be careful about not force-pushing any changes but rebasing on top of what is in your fork first. Your devices only have the serial port, right? There is no chance/need of adding |
Also, just in case - do you know the actual OEM and/or vendor of your devices? Quick googling for "Innova RT" showed hits for PhoenixTec, Eaton and Ippon, just on the first page... |
oh, that's me being inattentive - haven't noticed that your link refers to the webpage rather than source code
These big UPSes have both DB9 connector and USB port on the rear panel but it seems like internally they're just the same thing (I've found some evidences during extensive googling) and USB is not HID device - just a serial-to-com adapter inside UPS. Also
We bought Ippon model explicitly, I didn't even know that Eaton and so on can be a vendor for Innova RT 3/1 20K |
Can you please advise me what I should to do? I have little experience with collaborative work and PRs so I don't want to break something by accident |
I'll try to do it in short time, may be even on a next week |
btw, what about |
If the UPS provides them, these are preferred over software "guesstimates".
In your local repository workspace, run |
Yes, this is typically the case with QX devices. My changes to the documentation point to some C methods and lists involved in USB support, whether it would suffice to reuse an existing USB |
CC @arnaudquette-eaton : do you know if different "Innova RT" models from different vendors come from same OEM, or are they completely unrelated? Eaton and Phoenixtec seem to be together, e.g. https://www.eaton.com/content/dam/phoenixtec/brochure/online-ups/innova-rt/INNOVA_RT%20.pdf URL and content implies that, not sure about Ippon... Practical aspect: should this new driver stress it is for "Ippon Innova RT 3/1" or it should fit other Innova's too? |
I should say that RE was conducted via RS232 sniffing and then I seamlessly moved to the USB connection. Auto detect lead to the Also I think that 3/3 models should work in the same fashion - we just need to report Moreover, as for now I've decided to use light versions of Blazer init and claim functions because I'm not sure if The main problem is that I only have a bunch of identical Innovas which are all just a copy of each other. I can't test on similar equipment with different ratings or in-to-out topologies |
According to your link there are models ranging from 1 kVA to 10 kVA. Ippon has 10k, 20k and 10k compact versions only. So, Ippon's UPSes should be different from Eaton/Phoenixtec ones. |
From
Grepping in drivers source tree reveals that this VID/PID pair is referred to as Phoenixtec while
|
Cool, thanks for checking! So it seems the devices are related after all. Maybe that Eaton PDF was older, or limited to the smaller line-up. Ippon photos looked roughly reminiscent of Eaton Powerware 9395 or some such, but the photos I found now are not that similar, except that both are whole-rack-sized UPSes :) |
…ecognized by hardware). Added firmware version and serial number of UPS. Reorganized readings to minimize data between host and UPS according to the developer docs. Added known input, output and bypass readings as comments for future development (3/3 versions). Signed-off-by: Viktor Drobot <linux776@gmail.com>
Signed-off-by: Viktor Drobot <linux776@gmail.com>
Signed-off-by: Viktor Drobot <linux776@gmail.com>
Hmm, something strange happens when queries to the UPS are minimized. Now I can't even initialize driver:
There was no such a problem when requests were placed in logical groups rather than minimizing ones PS: now I've moved bypass readings before
PS2: even with original order it seems like answers will or will not come at random:
Maybe timings between requests can produce such behavior... PS3: tried with serial-to-usb converter, got the following results:
So it works much better than using direct USB connection. But first |
OK, to summarize my previous message. Internal implementation of USB in this UPS is buggy - answers depend on the order of requests, different readings fail on random causes. Using RS232->USB converter:
resolves such problems (so, I think there's nothing more to do here because all critical parameters and commands are working fine at least with serial communication line. At least now we can read all info that official WinPower software provides. Glitches with USB are related to the specific integrated converter, I think |
Signed-off-by: Viktor Drobot <linux776@gmail.com>
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
…2712] Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
@dvdesolve : would you please post a data dump from a recent build for the DDL collection? |
Ippon__Innova_RT_3_1_20K__nutdrv_qx__2.8.2.1__01.dev
|
A bit offtopic: I want to add that I've tested Ippon Back Basic 650, 850, 1500 and 2200 (both Euro and IEC versions) with |
Thanks for the info! If you've got those data dumps, feel free to post them too (maybe in a separate ticket to keep things tidy). |
Done in #2720 |
Done in networkupstools/nut-website#58 |
…T 3/1 driver development [networkupstools#58] * networkupstools#58 * networkupstools/nut#2712 Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
I recently acquired a piece of documentation from a SANTAK reseller on their product using Q6 query. I hope this helps to understand the Q6 query. |
Thank you a lot for your PDF! I was able to translate almost all of its contents and it looks like our guesses about three phase measurements were right! I'll try to prepare human-readable description soon - there are some interesting details about service flags etc and I think we should discuss them and may be even try to implement common Q6 driver, not only for Ippon Innova RT 3/1 |
We own a bunch of Innova RT 3/1 (20K version) UPSes. They are of 3-in (+bypass) 1-out type UPS. COM port sniffing + tickling "official" software called WinPower gave some useful info for RE this version of protocol. Also I see that there are some issues regarding Q6 variant of protocol already (#1039, #1395).
Below is a short description of all commands that I was able to successfully intercept and decode (partially, though).
Serial number
Seems like to be true, starting from position 7 (my real s/n was
N05K10KB100004
). As far as I remember occurs only once during initial scan by WinPower.Not used in protocol implementation.
Ping
Not sure if this is true. This message occurs from time to time during WinPower's agent working.
Not used in protocol implementation.
Model (+specs)
Seems to be model code (field 4), topology (field 6), nominal voltage (field 8) and frequency (field 9), number of batteries (field 10). Wasn't able to find real meaning of other fields.
Not used at all in protocol implementation.
Load stats
Fields 1 and 7 seems to be real power measurements on output while fields 4 and 8 - the full one. This example a bit clumsy because in that case cos(phi) was about 1, but in another measurements I was able to get different readings. Not sure why these fields are in pairs (m. b. rolling average?). Field 9 is a current (amps), field 12 - load (percents).
Used in load measurements.
Bypass stats
Field 1 corresponds to bypass voltage and field 4 stands for bypass frequency. I suspect that fields 2 and 3 will have non-zeroes for 3/3 UPS models.
Used in bypass stats.
Common stats
That's the core command to get stats of input/output and battery. First 3 fields correspond to voltages on input phases, field 4 is an input frequency, fields 5-7 are for output voltages (6 and 7 are zeroes because of 3/1 UPS model in my case), field 8 is output frequency, field 9 is load (percents), field 12 is battery voltage, field 14 is internal temperature, field 15 is estimated runtime, field 16 is battery charge level (percents). Not sure what other fields mean.
Heavily used for main stats.
Temperature reading
Seems like it's just a duplicate.
Not used.
Battery level
The same story as above. Not used.
Bypass limits
Seems to be limits for bypass: low frequency, high frequency, low voltage and high voltage, respectively.
Not used.
Ratings
Seems like to be a standard one: nominal voltage, nominal current, nominal battery voltage, nominal frequency.
Used for the sake of completeness.
ECO mode acceptable frequency range
Looks like these values are acceptable percentages of marginal deviations in frequency while being on High Efficiency (or ECO) mode.
Not used.
ECO mode acceptable voltage range
The same as above but for voltage story.
Not used.
Firmware version
Not sure if that's true - I don't have any firmware files to check this fact. May be useful if full Blazer claiming procedure is used (my PR uses light version).
Not used.
Unknown function request
Don't know what that mean at all.
Not used.
Also I have few questions.
runtimecal
or magic withbattery.voltage
vars. Or is there some settings which allow to use guesstimated/calculated runtimes/levels or reported ones?ACK
s for existing instcmds whileNAK
for forbidden ones. I may be completely wrong about that and more testing is needed. However, I've tried sending some instcmds (only tests, though) and it worked fine.TESTING
table does. I've filled it with some strings that I knew but I can't test this structure by myself. Any help is appreciated!