Перед Вами список доступных страниц, упорядоченный по пространствам имён (namespaces).
- Ну… первый это вообще-то фотооаппарат, а второй - это мп3 плеер. ©
У каждого телефона обязательно должно быть:
Довольно частая проблема с устройствами, заряжающимися от USB → их нежелание заряжаться от чего-либо, кроме компьютера и фирменных зарядок. Хотя, казалось бы, USB как USB. Фокус здесь в том, что правильно работающему устройству необходимо уметь отличать просто зарядник от USB-порта компьютера → от последнего оно не имеет права потреблять более 100 мА, пока ОС не разрешила ему это сделать. Очевидно, что от зарядника ждать каких-то разрешений несколько глупо, поэтому на нём надо сразу врубать полную нагрузку.
Решается это крайне просто, без каких-либо хитрых микроконтроллеров: в заряднике часть контактов USB-разъёма закорачивается друг на друга, так что с точки зрения устройства USB-разъём зарядника радикально отличается от USB-разъёма компьютера. Например, у Palm Treo Pro в кабеле зарядника закорочены друг на друга D+ и D– (центральные два контакта в 4-контактном USB), у Motorola схема чуть сложнее. То есть, например, любой переходник «прикуриватель→USB» или «розетка→USB» адаптируется под зарядку пальмы за три минуты и два движения паяльником.
Читать питание от USB.
Первое и самое главное: нет никаких общепринятых и реально используемых способов проверки или ограничения потребляемого устройством тока, работающих без поддержки со стороны самого устройства. На разъём USB приходят 5 В — и всё, если производитель не поставил на этот порт предохранитель, вы можете нагружать его до тех пор, пока разъём не расплавится. Воткните в него резистор на 5 Ом — и вы будете получать от USB 1 А, при этом ОС будет с полной уверенностью считать, что нагрузка на порт равна нулю.
Здесь мы подходим ко второму вопросу: откуда ОС знает про нагрузку на порт? А ей об этом сообщает само устройство. Любое USB-устройство обязано иметь в себе пачку дескрипторов, значения которых при подключении устройства передаются на хост — и последний из них узнаёт, как устройство называется, что делает, на какой скорости работает и так далее. В частности, там есть конфигурационный дескриптор, в котором есть параметр bMaxPower — в нём указывается максимальное потребление устройства. Параметр однобайтовый, ступенька — 2 мА, т.е. максимум устройство может сообщить о потреблении 255*2 мА = 510 мА. Если ОС считает, что допустимая нагрузка на порт превышена (на нём же могут быть несколько устройств), оно выдаёт устройству отказ — и последнее обязано остаться в спячке. Проверить, осталось ли устройство в спячке или всё равно включилось и жрёт сколько может, невозможно.
Ещё раз:
В iPad чуть хитрее: наверняка ему для включения зарядки требуются не просто 5 В от USB, а какой-то специфический пинок, не получив который, iPad зарядку не включает, чтобы не сжечь порт. Этот пинок не имеет никакого отношения к спецификациям USB, это просто какой-то определённый пакет данных, передаваемый софтом на USB-устройство. Та же история с некоторыми мобильными телефонами: чтобы заряжаться от USB, им нужен либо свой софт, который отвесит им пинок, либо USB-кабель, в котором закорочены центральные контакты (такие кабели ставятся на зарядники 220V→USB, чтобы устройство умело отличать их от USB-порта компа).
Собственно, это всё, что делает «драйвер» Gigabyte: при виде iPad он отсылает ему команду «Заряжайся!». Всё. Больше никаких телодвижений не надо. Вы можете отослать ему эту команду на абсолютно любом компьютере — и он начнёт от него заряжаться. Конкретные модели материнок к данному «драйверу» привязаны только тем боком, что Gigabyte как бы гарантирует нам — от такой нагрузки USB в них не сгорит.