Connecting a Huskylens2 to my Arduino uno doesn't work

I'm trying to connect to my HuskyLens2 to my Arduino uno r4 wifi. Since the arduino is female and only accepts male and the HuskyLens is the same, I using a male-to-male cable as an adapter to connect them two.
Here is my I2C scan script:

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(115200);
  Serial.println("Scanning...");
}

void loop() {
  byte error;

  Wire.beginTransmission(0x50);
  error = Wire.endTransmission();

  if (error == 0)
    Serial.println("HuskyLens found at 0x50");
  else
    Serial.println("HuskyLens NOT found at 0x50");

  delay(1000);
}

It prints "HuskyLens found at 0x50" so I know it connects (Unless it should connect to 0x32, but im guessing that 0x50 is 0x32 in decimal form)
However when I run the following I get:
"Begin failed!
1.Please recheck the "Protocol Type" in HUSKYLENS (General Settings>>Protocol Type>>I2C)
2.Please recheck the connection."

#include "HUSKYLENS.h"

HUSKYLENS huskylens;

void setup() {
    Serial.begin(115200);
    Wire.begin();
    while (!huskylens.begin(Wire))
    {
        Serial.println(F("Begin failed!"));
        Serial.println(F("1.Please recheck the \"Protocol Type\" in HUSKYLENS (General Settings>>Protocol Type>>I2C)"));
        Serial.println(F("2.Please recheck the connection."));
        delay(100);
    }
}


I don’t have a HuskyLens 2 (I have the older ones), but one thing to note is that “x50” is indeed hexadecimal, not decimal - that's what the “0x” part indicates.

I suggest you run a simple I2C port scan to see which address your HuskyLens actually uses.

I ran this script;

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(115200);
  while (!Serial);
  Serial.println("Scanning I2C bus...");
}

void loop() {
  for (byte address = 1; address < 127; address++) {
    Wire.beginTransmission(address);
    byte error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("Device found at 0x");
      Serial.println(address, HEX);
    }
  }

  Serial.println("Scan complete.\n");
  delay(3000);
}

and got:
Device found at 0x1
Device found at 0x2
Device found at 0x3
Device found at 0x4
Device found at 0x5
and more ...

So a device is found at every location. Where can I go from this?

Disconnect all I2C devices (maybe all devices) so no "device found" should return, and run your code again.

This is the I2C scan sketch I use...

#include <Wire.h>
int address, deviceFound,  error;

void setup() {
  Wire.begin();
  Serial.begin(115200);
  Serial.print("I2C bus device addresses:");

  for (address = 0; address < 128; address++ )  {
    Wire.beginTransmission(address);
    if (!Wire.endTransmission()) {
      showHex(address);
      deviceFound++;
    }
    else if (error == 4) {
      Serial.print(" Error at");
      showHex(address);
    }
  }
  if (!deviceFound)
    Serial.println(" No I2C devices found.");
}

void loop() {}

void showHex(int hex) {
  Serial.print(" 0x");
  if (hex < 0x10)
    Serial.print(0);
  Serial.print(hex, HEX);
}

I ended up switching to an espressif esp32-s3 dev module and it's working fine.
However can I use the #include <Wire.h> library or is it only for arduino? Do I have to use the #include <esp_wifi.h> library?
Thank you in advance

I think Wire.h supports ESP32, but declare the I2C bus pins you define, like...

  Wire.begin(I2C_SDA, I2C_SCL);

Sounds like a bad connection(s).