atagulalan / arctis-battery-percentage

πŸ”‹ Shows SteelSeries Arctis wireless device's battery percentages as a notification.
MIT License
70 stars 16 forks source link

Multiple issues using Arctis 1 Wireless #21

Open JanRaber opened 3 years ago

JanRaber commented 3 years ago

First of all, thanks for spending your free time to make up for Steelseries missing basic features. I was facing some issues while trying to use your project. My setup is the following:

1. npm package not working

It's super convenient to have a npm package. Unfortunately it is not working for me. I installed it globally using npm i -g arctis-battery-percentage but when I call arctis-battery no output is shown on the command line.

C:\>arctis-battery

C:\>

2. Running the script locally

In issue #10 @ateee0907 was facing the same issue. You were asking him to execute the script locally, so I decided to do the same. When executing node ./percentage.js in the main directory, I get an error message, complaining that path module isn't defined.

C:\arctis-battery-percentage-master>node ./percentage.js
Initializing...
Your Arctis 1 Wireless device's battery percentage is 3
C:\arctis-battery-percentage-master\percentage.js:48
arctis-battery-percentage-master\percentage.js:48
    icon: path.join(__dirname, `./images/${percentage}.png`),
          ^

ReferenceError: path is not defined

So I went ahead and required the path module in the beginning of your script by adding const path = require('path'). After that the error vanishes. Is this error and behaviour expected?

3. Wrong percentage

After I was able to get the script going, the desired cli output and notification showed up. Unfortunately the returned value is wrong (see screenshot). I just fully loaded the headset which you can clearly see in SteelSeries Engine in the background. grafik

4. Percentage is only found when SteelSeries Engine window is active

When executing the script nothing happens until I click on the SteelSeries Engine window. I guess the arctis-usb-finder module is only able to find the headset when SteelSeries Engine is active. Is this expected?

Sorry for reporting multiple issues within one GitHub issue, but I'm not sure if they are somehow connected, so I decided to put them all in one issue. And once again, I'm grateful for your efforts on this topic, I just can't quite get it to work. If you need further information on investigating this issue, just let me know πŸ‘

JanRaber commented 3 years ago

Since you asked for output of list.js in #19 I guess it makes sense for this one as well. It looks like the headset is found and the vendorId is matching what you expect.

C:\arctis-battery-percentage-master>node list
{
  vendorId: 4152,
  productId: 4787,
  path: '\\\\?\\hid#vid_1038&pid_12b3&mi_03&col02#7&1474c344&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless',
  release: 261,
  interface: 3,
  usagePage: 65347,
  usage: 514
} [
  6, 18, 3, 87, 0, 214, 15, 0, 0,
  0,  0, 0,  0, 0,   0,  0, 0, 0,
  0,  0, 0,  0, 0,   0,  0, 0, 0,
  0,  0, 0,  0
]

I also checked the remaining HID devices and was able to find the headset 3 times. I was trying different USB ports, USB hub, etc. so that's probably where the other entries are coming from.

{
  vendorId: 4152,
  productId: 4787,
  path: '\\\\?\\hid#vid_1038&pid_12b3&mi_03&col01#7&1474c344&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless',
  release: 261,
  interface: 3,
  usagePage: 12,
  usage: 1
}
{
  vendorId: 4152,
  productId: 4787,
  path: '\\\\?\\hid#vid_1038&pid_12b3&mi_03&col02#7&1474c344&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless',
  release: 261,
  interface: 3,
  usagePage: 65347,
  usage: 514
}
{
  vendorId: 4152,
  productId: 4787,
  path: '\\\\?\\hid#vid_1038&pid_12b3&mi_03&col03#7&1474c344&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless',
  release: 261,
  interface: 3,
  usagePage: 65280,
  usage: 1
}
atagulalan commented 3 years ago

Thank you for this issue.

1) npm package is really outdated. I think I could use Github Actions to publish when something is changed. Thank you for letting me know. 2) Wow. How did I miss this? Thank you for the PR! 3) This is not how it's supposed to work. Try to connect the headphone via cable and try again. 4) This is also not expected. Try to run as administrator.

I'll look into it, but I'm afraid it will take some time.

JanRaber commented 3 years ago

Don't worry about it, I'll be able to use my headset without knowing the exact percentage of the battery πŸ˜„

Running as administrator doesn't change the behaviour.

When I connect via USB cable my device is not found. So both percentage.js and list.js don't return any information. This is also visible in the output of list.js after printing all deviceInfos.

{
  vendorId: 4152,
  productId: 4788,
  path: '\\\\?\\hid#vid_1038&pid_12b4&col01#6&9996a9d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless Bootloader',
  release: 261,
  interface: -1,
  usagePage: 12,
  usage: 1
}
{
  vendorId: 4152,
  productId: 4788,
  path: '\\\\?\\hid#vid_1038&pid_12b4&col02#6&9996a9d&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless Bootloader',
  release: 261,
  interface: -1,
  usagePage: 65472,
  usage: 1
}
{
  vendorId: 4152,
  productId: 4788,
  path: '\\\\?\\hid#vid_1038&pid_12b4&col03#6&9996a9d&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}',
  manufacturer: 'SteelSeries',
  product: 'SteelSeries Arctis 1 Wireless Bootloader',
  release: 261,
  interface: -1,
  usagePage: 65280,
  usage: 1
}
Zdebu commented 3 years ago

Hi, i don't wanna hurry you guys but i need to know, is there any news about Arctis 1 support? I purchased it today and i appreciate your work and i can't wait to have that indicator on my computer to have real battery percentage of my headset.

hynekhavel commented 2 years ago

Hi, som one found solution for this? Device info from my Arctis 7+

  {
    vendorId: 4152,
    productId: 8718,
    path: '\\\\?\\hid#vid_1038&pid_220e&mi_03#8&a391bfb&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}',
    manufacturer: 'SteelSeries',
    product: 'Arctis 7+',
    release: 261,
    interface: 3,
    usagePage: 65472,
    usage: 1
  },
  {
    vendorId: 4152,
    productId: 8718,
    path: '\\\\?\\hid#vid_1038&pid_220e&mi_04#8&8f70043&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}',
    manufacturer: 'SteelSeries',
    product: 'Arctis 7+',
    release: 261,
    interface: 4,
    usagePage: 12,
    usage: 1
  },
  {
    vendorId: 4152,
    productId: 8718,
    path: '\\\\?\\hid#vid_1038&pid_220e&mi_05#8&1c271c81&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}',
    manufacturer: 'SteelSeries',
    product: 'Arctis 7+',
    release: 261,
    interface: 5,
    usagePage: 65280,
    usage: 1
  }

Every device return usage:1. It probably doesn't work with this type of headsets :(