💾 Archived View for alaskalinuxuser.ddns.net › 2023-01-05.gmi captured on 2024-09-29 at 00:21:12. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
">
024w, https://alaskalinuxuser3.ddns.net/wp-content/uploads/2022/12/m4_index-
300x163.png 300w, https://alaskalinuxuser3.ddns.net/wp-content/uploads/2022/12/
m4_index-768x417.png 768w, https://alaskalinuxuser3.ddns.net/wp-content/
uploads/2022/12/m4_index.png 1366w" sizes="(max-width: 1024px) 100vw,
1024px" />
In my last post I talked about my attempts at “hacking” into an IPLC-M4-CORD
smart cord. Be sure to check out that post to see how I found my way into a
telnet based connection on port 80 and what other fun hidden menu options that
I found. I had big plans to spend some more time on working this over, but
ended up a little too busy to accomplish too much more.
Overall, progress has been slow. I have not found a way to permanently enact
any change over the cords default programming at this time. Part of the problem
is that experimentation requires a certain amount of risk, and since I don’t
own the cord in question, I, and the owner, are a little hesitant to take too
great of a risk with a working piece of equipment that costs roughly $80. E.g.,
it is a bit expensive to replace if we break it.
One of my last experiments with it, by attempting some of the writing
functions, left it looking rather brain dead for a few minutes, and we were
unsure if it would return to it’s usual state, so we brought the project to a
close. However, I’d be glad to show you a few fun things that we did.
First, one of the funnest parts of the project was that of changing the LED
color, but we could only affect it briefly, before the usual programing took
back the LED to change it to the designed color. Once you are telnet, or nc’d
in, just do the following:
%% F 100,0,255\n(PINK)\n%% F 0,100,255\n(CYAN)\n%% F 100,255,0\n(YELLOW)
Fortunately, the RGB LED colors were simple decimal values and you can look
them up in any table online. They accept any value from 0 to 255 for each
color, being Red, Green, and Blue in order. If you tried an erroneous number,
the LED would flash red momentarily and then go back to it’s usual programming.
We were hoping to figure out how to permanently change the default colors from
green and yellow (for gas and diesel profiles respectively) to pink and purple
for my co-workers wife.
Another feature we put to use was the load command, with the L key:
%% L\nON\n\n%% L\nOFF
This command simply turned the power to the load on and off. By itself, this
command essentially became the “boost” button that you see in the web gui for
controlling the unit.
We also could pull a lot of information from the unit with the sensor
information, like the proximity sensor used to tell if you “pushed” the
“button” on the unit (it has no button, just detects your close finger and
switches profiles), or the accelerator data, ambient temperature, or even the
ambient light levels. Most of this could also be summed up in the S command to
show status, like so:
%% S \nserialnum: 400226\njohndra: 10\ncode version: 000000E8\nBOOT version:
00010000\nM210 Control: 00 LCA: 00 TIMER: 00 T: A8 20.000°C \nCYCLE: C5
ORDER: 00 \n\nSystem Status: 00000000 \nQSPI MODE: 1 STAIP: \n\n VS: 0804
0.1005 0804\n VL: 0804 0.1004 0805\n IL: 07E8 0.0244 07E8\n TC: 0000 TCoff:
FFFE TCfloat: 0.000°C\n TI: 03E3 TIoff: FFFA TIfloat: 28.300°C\n TA: 05E0
TAoff: FEFE TAccel: 29.867°C\n TCaseOff: -8.000°C\n\n Supply V: 4.302 Line
Freq: 59.977 BREAKS: 0\n Gravimetric X: 0.15 Y:-0.25 Z: 0.93\n Twilight
Ambient lux: 19.6722 CH0: 7.0 CH1: 3.0\n Proximity: 034E trip: 03B7\n VS:
105.784 VL: 30.644 IL: 0.048\n PL: 0.68 QL: -1.33 PF: 1.00\n Tint:
28.31°C TCase: 20.10°C TAmb: 20.10°C\n
With these combined commands, we actually could control the unit from a
computer, able to turn the load on and off at any interval we wanted, check the
status of the load, and change colors. Essentially, we had complete control
over the currently running instance, and if scripted, as long as you had
control from the computer, you could essentially make the unit do whatever you
wanted. However, once the computer disconnected, or the cord was unplugged and
plugged back in, it returned to it’s pre-programmed default behavior.
Where we got into a spot of trouble was by trying to write offsets and flash
calibration info. We could run the command, but there is no explanation stating
what info we should put into the command. E.g., write “abc”, but what should we
put in there. needless to say, entering sporadic information in an attempt to
see what we could accomplish did not yield positive results.
We did find that if you send the R command, the unit would reboot to a special
bootloader mode, with a new web gui that allowed you to upload firmware,
however, without any knowledge of what the firmware should look like, we
couldn’t make much progress with it. It appears to expect a binary file,
probably similar to something you would flash to an Arduino type device.
That being said, I think another avenue would be to disassemble the unit and
see what chips are inside. This would give us more information to work with and
may even lead to the proper programming tools. However, the units are sealed
because they go outside, and breaking open an $80 part that works great to play
around was not something my co-workers and I were willing to do, since it was
pretty obvious that we would likely damage it in the process.
I did reach out to IPLC, the company that made the devices. I told them exactly
what I was trying to accomplish and what I had tried thus far. They were very
polite, but also very firm that they would not assist me and that my warranty
would be void. I certainly can’t blame them, but I was hoping for a little bit
of insight. They have other units that they allow you to reprogram locally, to
any settings you want, so I thought perhaps they would be a little more open to
the idea for this. I also requested if they would program a cord for us that
did what we were attempting to do, but they said that they could not do that at
this time.
I can’t help but feel a little defeated, to get so “close” as we were “under
the skin” so to speak, but couldn’t affect lasting change on the device. But,
it was a really fun experience! Who knows, maybe we will come back to it,
especially in the summer, when we don’t need it.
Linux – keep it simple.