HEPA Fan Troubleshooting

Hi, everyone, I’m Nat, and I’m new to PLR and a noob at coding lol

I figured the best way to become familiar with PLR is to use it, and so I tried doing so to control my Hamilton HEPA fan on the Vantage, since the model I have is not compatible with being controlled via VoV. But I want to confirm something: the current backend code for the fan only supports the older model, right? Cause I have the one with the touchscreen, and I’m running into an issue that I suspect is the case.

2 Likes

Hi @Nat,
Welcome to PLR :blush:

I recently updated the Hamilton HEPA Fan — PyLabRobot documentation

Regarding old HEPA fan vs New Hamilton Clean Air Protection (CAP) hood PLR support: I am not sure any PLR user has a new one / tried it on one yet.

Could you please elaborate on what problem you’ve encountered?

Pretty sure that one is not able to be controlled by Venus even. We have to turn it on manually

Edit, maybe you are?? We’ve never bothered

2 Likes

I did a bit more troubleshooting to no avail, unfortunately

@cwehrhan You can control it via VENUS, but only on the STAR line for these hoods. Vantage refuses to connect to it, and I tried doing so through the library; hence is why my FSE said VANTAGE CAP is the only fan compatible with VoV :melting_face: Which is why I thought of using PLR as a way around that incompatibility.

@CamilloMoschner The error I am encountering when script my script is this:

pylibftdi._base.FtdiError: b'usb_open() failed' (-4)

After a bit more digging, I found that the FanBackend.py is searching under a specific VID and PID (see below), and according to the Device Manager, where my fan is COM12, the VID: PID is different (FTDIBUS\COMPORT&VID_0403&PID_6015) with a different serial number. I suspect that could be the issue or not, but I wanted to confirm with you.

# Make pylibftdi scan the Hamilton HEPA Fan VID:PID
# appears as ID 0856:ac11 B&B Electronics Model USOPTL4
from pylibftdi import driver

from pylabrobot.io.ftdi import FTDI

from .backend import FanBackend

driver.USB_VID_LIST.append(0x0856)  # i.e. 2134
driver.USB_PID_LIST.append(0xAC11)  # i.e. 44049


class HamiltonHepaFanBackend(FanBackend):
  """Backend for Hepa fan attachment on Hamilton Liquid Handler"""

  def __init__(self, vid=0x0856, pid=0xAC11, serial_number=None, device_id=None):
    self.vid = vid
    self.pid = pid
    self.serial_number = serial_number
    self.io = FTDI(device_id=device_id)
1 Like

awesome

does the hood plug into the star&vantage or into your computer directly?

if you edit the vidpid into the file in PLR does it work? (add a print to confirm the correct file is running)

ie

driver.USB_VID_LIST.append(0x0403) 
driver.USB_PID_LIST.append(0x6015)
print("here")


class HamiltonHepaFanBackend(FanBackend):
  """Backend for Hepa fan attachment on Hamilton Liquid Handler"""

  def __init__(self, vid=0x0403, pid=0x6015,

Hood is plugged into the computer via “USB cable (USB-B with at fan end; USB-A at control PC end)” :slightly_smiling_face:

I did try that out before and again now (“here” was printed), but the same error still occurs. For some reason, I have three Hamilton Heater Coolers also connected to the PC, and they all share the same VIDPID as the fan. Even when I unplugged them, I still get the same error.

Also, to confirm, the fan should be listed under Ports (COM & LPT) for the script to normally work, right?

1 Like

in that case we can definitely make it work with PLR

the problem is with VoV

fundamentally you just have to send the right bytes over the wire, no matter where the fan is.

the question right now is:

  • why can’t we connect? probably some easy problem with com port
  • once we connect, is the firmware interface the same as the older fan that this backend was made for? remains to be seen. (if it’s not the same, we can figure it out by looking at how star Venus talks to it, and then implement a plr interface. I’d be happy to do as much as I can)

you might need to replace the driver with the libusbk driver. we have instructions on our site: Installation — PyLabRobot documentation

what might be easier than that is to use a different computer if you have one, for example a Mac or rpi

can you run

python -m pylibftdi.examples.list_devices

(your virtualenv python, or wherever pylibftdi is installed)

:man_facepalming: thanks for letting me know

1 Like

I also did that where I replaced the driver libusbk on the Window PC and ran the script with the matching VIDPID with the only port plugged. No error, but it’s not reacting to the command. The setup command was definitely passed since I see the next line printed here:

Setting up the fan...
Turning on fan at 100% intensity for 60 seconds...
Press Enter to continue...
Turning off fan...
Done.

I also did the same on my Mac and got the same result as above. Even my mac was able to identify the connection (FTDI:FT230X Basic UART:D308VB1L). Therefore, it seems like the firmware interface is different then. In that case, it isn’t my highest priority, as this was meant as a test, but it is good to know that the compatibility is different for the newer model :melting_face:

1 Like

if you are interested I can teach you how to intercept the firmware commands. I can analyze them and figure out how to get it to work (I don’t have this fan myself)