Назначьте серийный номер устройству через Windows, чтобы различать геймпады

343
NaturalBornCamper

Я установил 4 универсальных USB-контроллера на свой компьютер, чтобы мои племянники могли играть вместе без боя («Универсальный», поскольку у меня нет денег, чтобы купить 4 официальных контроллера Xbox).

Все контроллеры работают совершенно независимо друг от друга в своих играх, однако, поскольку они являются универсальной китайской электроникой, они все используют одну и ту же конфигурацию, и изменение конфигурации одного из контроллеров в Steam изменит назначение каждой конфигурации для одной и той же конфигурации.

Как мы видим в Steam / logs / controller.txt, устройства не имеют серийных номеров, и я подозреваю, что именно из-за этого все 4 используют одну и ту же конфигурацию. В последней строке он присваивает серийный номер (79-6-6151b0), но назначает его каждому.

[2018-03-12 00:46:50] Local Device Found type: 0079 0006 path: sdl://15 serial_number:  [2018-03-12 00:46:50] Manufacturer:  [2018-03-12 00:46:50] Product: Generic1 [2018-03-12 00:46:50] Release: 0 [2018-03-12 00:46:50] Interface: -1 [2018-03-12 00:46:50] !! Steam controller device opened for index 2. [2018-03-12 00:46:50] Controller has an Invalid or missing unit serial number, setting to '79-6-6151b0' 

Я знаю, что SN может быть сожжен в прошивке контроллеров, таким образом, недоступной, но все же, кто-нибудь знает, есть ли способ эмулировать серийный номер на уровне Windows или сделать так, чтобы они были уникальными?

1
Да, iSerialNumber должен быть объединен с аппаратным обеспечением, как это делается для устройств хранения данных, уникальный номер для конкретного VID / PID. Это должна быть специальная процедура на стадии тестирования / бункера, которая добавляет стоимость. Если в драйвере Win10 есть заглушка для отсутствующего iSerialNumber, но этот номер совпадает для всех идентичных контроллеров, то это ошибка драйвера. Технически, каждое USB-устройство имеет свой дескриптор, поскольку ОС перечисляет его с разными USB-адресами, поэтому должна быть возможность генерировать разные iSerialNumbers. Ale..chenski 6 лет назад 0
Вы пытались подключить все четыре контроллера через внешний концентратор? Может, водитель придет в голову и сделает разные iSerialNumbers? Ale..chenski 6 лет назад 0
О, так это было бы возможно? Большой! Я пробовал через хаб на самом деле, вот как они все всегда все связаны. Кроме этого, я попытался просмотреть сведения о драйвере и файле driver.inf и увидел, что у каждого есть уникальный номер, который всегда возвращается при подключении, но я не знаю, откуда он NaturalBornCamper 6 лет назад 0

1 ответ на вопрос

2
Keltari

Я не думаю, что вы найдете простое решение для этого. Честно говоря, я думаю, что вам придётся жить с этими контроллерами как есть, или вернуть их и пойти в магазин по продаже подержанных игр и купить некоторые использованные контроллеры за меньшие деньги.

Я бы поспорил, что внутренние схемы в этих контроллерах - это просто микросхемы, то есть вы не можете получить к ним доступ. Это исключает изменение самих фишек.

Что касается их изменения на уровне Windows ... технически это могло бы быть возможным, но я думаю, что это не то, что кто-то пытался бы раньше или хотел бы попробовать.

Я не ожидал простого решения, хе-хе;) Я надеялся изменить файл input.inf для каждого и взломать что-нибудь на уровне Windows. И знал, что если бы был какой-то способ, кто-то мог бы указать мне здесь начальное направление, так как Google ничего не дает ... Я подожду немного, если у других людей появятся идеи, если ничего не появится, я приму ваше решение как единственное один, спасибо друг! NaturalBornCamper 6 лет назад 0
@NaturalBornCamper На самом деле вам нужно будет создать собственный драйвер устройства для контроллеров. Это означает, что вам придется кодировать всю функциональность контроллеров. Затем вам нужно будет написать код, чтобы найти способ уникальной идентификации их (если возможно, без серийного номера), а затем назначить серийный номер. Поскольку серийный номер - это то, что должно сделать его уникальным ... это ваша проблема. Может быть какой-то способ сделать это, но объем работы обходится дороже, чем покупка новых контроллеров. Keltari 6 лет назад 0
На самом деле я надеялся сделать это, взять уже использованный драйвер и просто изменить несколько строк для генерации серийного номера. Но я понимаю, как каждый контроллер будет использовать соответствующий драйвер без возможности однозначно идентифицировать их ... NaturalBornCamper 6 лет назад 0