Да, все есть и наготове. ...... То есть это из-за заблокированного контроллера и можно не ковырять больше ничего? - я только у выводов вероятного диода для его проверки подчистил. Зачем вообще они там залили компаунд? Ключи вот желтым теплопроводным, это понятно, а эти для чего? Для влагозащиты от возможного конденсата?
Тогда меняйте банки на сопротивления и читайте контроллер. Возможно и нагревается когда пытается сжечь пред, у самих банок сил не хватает, а когда вставлен в ноут, появляется встречка иии... Лучше запитать от ЛБП, у вас я так понял сборка 4S(4 банки последовательно) ставите напряжение до 14V ток 100mA, и когда будете выводить из спячки смотрите на ЛБП может быть рост по току с просадкой напряжения. Это как раз пытается сжечь пред. Это все применимо если у вас пред еще целый. Вы его точно проверили? В цепи нагревателя преда есть маленький ключ мосфет. можно его снять на время. В общем читай контроллер.
Зачем вообще они там залили компаунд? Ключи вот желтым теплопроводным, это понятно, а эти для чего? Для влагозащиты от возможного конденсата?
Ну конечно не для спасения схемы от пыли и от влаги. . Официально - компаундом заливают платы и РЭ, для виброзащиты (в основном, в военном исполнении). То есть, чтобы ничего не отвалилось и не потрескалось когда с самолета скинут... Но по факту, конечно же заливают от нас с вами - от тех, кто вопреки их желанию, пытается ремонтировать "неремонтопригодное" с их точки зрения устройство. Тоже самое - пароли и ограничение доступа к функционалу чипа. Вот для этого и залили...
Удалось восстановить работоспособность контроллера: СпойлерSMBusb Firmware Version: 1.0.1 ---------- Manufacturer Name: Panasonic Device Name: IBM-42T5264 Device Chemistry: LION Serial Number: 3660 Manufacture Date: 2020.09.20
Manufacturer Access: 0018 Remaining Capacity Alarm: 561 mAh(/10mWh) Remaining Time Alarm: 10 min Battery Mode: 8000 At Rate: 0 mAh(/10mWh) At Rate Time To Full: 65535 min At Rate Time To Empty: 65535 min At Rate OK: 1 Temperature: 22.65 degC Voltage: 11196 mV Current: 0 mA Average Current: 0 mA Max Error: 0 % Relative State Of Charge 25 % Absolute State Of Charge 25 % Remaining Capacity: 1379 mAh(/10mWh) Full Charge Capacity: 5616 mAh(/10mWh) Run Time To Empty: 65535 min Average Time To Empty: 65535 min Average Time To Full: 65535 min Charging Current: 3500 mA Charging Voltage: 12600 mV Battery Status: 00c0 Cycle Count: 0 Cell 0 voltage: 3744 mV Cell 1 voltage: 3732 mV Cell 2 voltage: 3720 mV Cell 3 voltage: 0 mV и откалибровать: СпойлерSMBusb Firmware Version: 1.0.1 ---------- Manufacturer Name: Panasonic Device Name: IBM-42T5264 Device Chemistry: LION Serial Number: 3660 Manufacture Date: 2020.09.20
Manufacturer Access: 0018 Remaining Capacity Alarm: 561 mAh(/10mWh) Remaining Time Alarm: 10 min Battery Mode: 8000 At Rate: 0 mAh(/10mWh) At Rate Time To Full: 65535 min At Rate Time To Empty: 65535 min At Rate OK: 1 Temperature: 26.85 degC Voltage: 12467 mV Current: 0 mA Average Current: 0 mA Max Error: 0 % Relative State Of Charge 100 % Absolute State Of Charge 99 % Remaining Capacity: 5587 mAh(/10mWh) Full Charge Capacity: 5611 mAh(/10mWh) Run Time To Empty: 65535 min Average Time To Empty: 65535 min Average Time To Full: 65535 min Charging Current: 0 mA Charging Voltage: 0 mV Battery Status: 00e0 Cycle Count: 2 Cell 0 voltage: 4158 mV Cell 1 voltage: 4170 mV Cell 2 voltage: 4139 mV Cell 3 voltage: 0 mV Единственное, смущает что флаг INITIALIZED (Battery Status 0x0080) не сбросился после калибровки. Может для этого потребуется несколько циклов заряда-разряда, время покажет.
Напомню, аккумулятор для ноутбука IBM ThinkPad T61 построенный на базе контроллера M37512 FC200 и драйвера M61048FP. Для считывания данных с контроллера и обмена данными с ним использовался инструмент smbusb от Karosium. Для того чтобы определить назначение областей памяти DataFlash (ba, bb) пришлось дизассемблировать прошивку. Для этого использовал ida pro 6.1 (см. приложение ida_m37512.zip). Удалось определить следующее: Спойлер
Для восстановления dataflash за основу были взяты значения, которыми она инициализируется после стирания. Переменная 0x0002 должна быть равна 0xFFFF, иначе контроллер блокируется. Для переменных 0x0010, 0x002E, 0x003D, 0x004C, 0x005B, 0x006A, 0x0079 нужно использовать оригинальные значения, иначе не будет работать измерение тока. Значения переменных 0x0088, 0x0092, 0x009C, 0x00A6, 0x00B0, 0x00BA, 0x00C4, 0x00CE не критичны, но не должны быть равны 0x0000 или 0xFFFF. Переменная 0x001A должна быть равна 0xF0 (разряд) иначе не определяется ток заряда (всегда 0). Значения переменных 0x0010...0x00CE защищены контрольной суммой (0x00D8). Для её вычисления написал скрипт на питоне (см. приложение m37512_fc200.zip; также имеется скрипт для преобразования даты, она не должна быть нулевой). Переменная 0x01ED должна быть равна 0x5a, иначе контроллер блокируется. Остальные значения оставил как есть (кроме, разумеется, количества циклов, даты, серийного номера).
Для сброса нужно: - подтянуть 9 и 12 выводы контроллера к плюсу питания (43 вывод) с помощью резисторов ~100 Ом; - подпаять аккумуляторы (если разблокировать с резисторами, вместо аккумуляторов, то контроллер блокируется позже при подпайке аккумуляторов, даже в сброшенном состоянии, когда вывод /RESET (15) подключён к минусу); - сбросить контроллер (кратковременно соединить /RESET с минусом); - записать ba_reset.bin в область ba; - записать bb.bin (заполненную 0xFF) в область bb; - отпаять всё от выводов 9, 12, 43; - сбросить контроллер (кратковременно соединить /RESET с минусом); - через 1-2 секунды контроллер подаёт напряжение на выход.
k0stya, Масштабная работа! А на каком ядре в IDA дизассемблили бинарник? Где брали? и на чем описание ядра, на Питоне? Может я не доглядел чего то в архивах. И у меня в IDA 6.50 что то не открывается idb, куча ошибок, база данных корруптед. )) Хотя IDA рабочая. я в ней Каросиумовский bq8030 открывал. Да это ладно, можно и бинарник загрузить, лишь бы ядро процессорное было.
Единственное, смущает что флаг INITIALIZED (Battery Status 0x0080) не сбросился после калибровки. Может для этого потребуется несколько циклов заряда-разряда, время покажет.
Так вроде и не должен он сбросится. Он же наоборот, когда установлен, показывает что все с флеш памятью ОК, и cheksum сходится.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
А на каком ядре в IDA дизассемблили бинарник? Где брали? и на чем описание ядра, на Питоне?
Контроллер M37512 основан на процессоре Mitsubishi 740, а он поддерживается из коробки. Только нужно выбрать ассемблер IAR 740 вместо Alfred Arnold's Macro.
Alex_PP писал(а):
Может я не доглядел чего то в архивах. И у меня в IDA 6.50 что то не открывается idb, куча ошибок, база данных корруптед. )) Хотя IDA рабочая. я в ней Каросиумовский bq8030 открывал. Да это ладно, можно и бинарник загрузить, лишь бы ядро процессорное было.
Может версии несовместимы. У меня "IDA Pro Advanced 6.1" с рутрекера.
Alex_PP писал(а):
Так вроде и не должен он сбросится. Он же наоборот, когда установлен, показывает что все с флеш памятью ОК, и cheksum сходится.
Да, вы правы. Перечитал описание в документации, изначально неверно понял.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
Контроллер M37512 основан на процессоре Mitsubishi 740, а он поддерживается из коробки. Только нужно выбрать ассемблер IAR 740 вместо Alfred Arnold's Macro.
Да все может быть. Но у меня тоже Ida pro Advanced только 6.5, x32. Я на ней конвертировал с версии 5.6 базу, все получилось. А с вашей никак. Ладно, будет время, попробую бинарник загрузить. Просто придется с нуля дизассемблить, а я в этом не очень. )) А так, было бы удобней, и сравнить с чем.
Добавлено after 38 minutes 13 seconds: Кстати. может сразу и найдете в прошивке команду (или серию команд) ввода контроллера в Бут, без "подтягивания" пинов? )) Полагаю, это интересный вопрос для многих. И еще, наверняка есть у них тоже свои команды калибровки PCB, сброса программного, а не апператного, установки значений регистров, счетчиков, и пр... Все это должно "всплыть" из прошивки. Кому, как не вам "добить" ее?
Кстати. может сразу и найдете в прошивке команду (или серию команд) ввода контроллера в Бут, без "подтягивания" пинов? ))
Я пытался. Дело в том, что в этом контроллере сильно развиты команды адресации и код сильно ветвится, имеется огромное множество битовых флагов, назначение которых сложно определить. Особенно сложен код отвечающий за обмен данными по I2C. Сам загрузчик я нашел. Также найден код копирующий загрузчик в оперативную память и запускающий его оттуда. Но на определение нужной последовательности команд у меня не хватило упорства. Вся эта затея и так отняла слишком много времени.
Как оказалось, если реальная ёмкость батареи сильно отличается от указанной в dataflash, контроллер не может её корректно определить даже после нескольких полных циклов заряда/разряда (ёмкость меняется, но понемногу). Более того, при большой нагрузке (при большом потреблении) контроллер и вовсе может заблокироваться. Чтобы батарея работала стабильно нужно в dataflash записать реальную ёмкость аккумуляторов. Это значение находится по смещению 0x012C и равно 7712 -> 0x1277 (значения в память имеют обратный порядок байт). Оно хранится в каких-то промежуточных единицах измерения, для преобразования в миллиамперчасы нужно умножить его на 1.1:
Цитата:
0x1277 * 1.1 = 4727 * 1.1 = 5200 мАч
Чтобы получить милливаттчасы нужно ещё домножить на номинальное напряжение (смещение 0x014C в dataflash):
Цитата:
4727 * 1.1 * 10.8 = 56157 мВтч
Для экспериментов собрал батарею из б/у аккумуляторов с ёмкостью ~1100-1200 мАч. Т.е. полная ёмкость батареи где-то 2200 мАч, вместо номинальных 5200 мАч. После прошивки dataflash с указанной реальной ёмкостью:
Цитата:
2200 / 1.1 = 2000 = 0x07d0 -> d007 в памяти
контроллер стал работать стабильно, не блокируется. Автономность, конечно, невысокая ~30 минут работы, но после калибровки контроллер даже показал немного большую ёмкость (~2311мАч).
В процессе разбирательства также решил закрыть вопрос с загрузчиком. Обнаружил скрытые команды, которые позволяют читать из памяти, записывать в оперативную память, сбрасывать контроллер (перезагружать), но самое главное - переводить в режим загрузчика. Работать непосредственно с командами неудобно, поэтому написал несколько скриптов: rd_mem.py - позволяет считать байт из памяти; формат запуска следующий:
Код:
./rd_mem.py 14a
где 14a - адрес памяти в шестнадцатеричном формате
wr_mem.py - позволяет записать байт в оперативную память:
Код:
./wr_mem.py 14a 5a
где 14a - адрес (0-63f), 5а - байт для записи в шестнадцатеричном формате
dump_flash.py - позволяет считать указанные области памяти; если запустить без параметров будут скопированы области ba и bb; пример вызова:
Код:
./dump_flash.py b0 b1 b2 b3
Процесс копирования довольно долгий, так как считывание производится побайтово.
write_flash.py - позволяет записать файл в выбранную область памяти; скрипт интерактивный, сначала запрашивается область памяти, затем выбирается файл прошивки (должен лежать в одном каталоге со скриптом), далее переводит контроллер в режим загрузчика, стирает выбранную область памяти, записывает в неё содержимое файла и выводит контроллер из режима загрузчика. Запускается без параметров:
Код:
./write_flash.py
reset.py - переводит контроллер в режим загрузчика, стирает области bb и ba, записывает в область ba содержимое файла ba_reset.bin, выводит контроллер из режима загрузчика и отображает состояние батареи. Запускается без аргументов.
Удалось разобраться не со всеми командами. Всё это работает только на прошивке от Panasonic, на батареи от LGC (IBM-42T4653) они не работают. Но зато на батареи от LGC нет никаких паролей, просто подтягиваешь 9-й и 12-й вывод к 43-му стираешь области ba, bb - готово.
Добрый вечер .k0stya. Вы серьезно поработали с чипом m37512. И даже скрипты к Каросиумовской утилите написали. Весьма впечатляет, по крайней мере меня. Только вы не все четко резюмировали, относительно методики сброса и входа в бутром режим. Эта команда - все что требуется ему для входа в бут? Если я правильно понял. smbusb_comm -a 16 -c ff -w cdab То есть, просто передать по адресу ff число cdab? А вот с ресетом я что то подрастерялся, не нашел у вас там. Если не сложно, прокомментируйте методики одного и второго. Спасибо!
P.S. То что работает только на прошивке Panasonic - вполне понятно, у каждого свои методы входа в бут и разлочивания.
Команда "ff" с паролем "cdab" открывает доступ к скрытым командам. Команда для перевода контроллера в режим загрузчика - "dd" с тем же паролем "cdab". Т.е. для перехода в режим загрузчика нужно выполнить:
Код:
smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c dd -w cdab
Тут нужно пояснить важный момент. У микроконтроллера есть два режима работы: нормальный и режим загрузчика (назовём его загрузчик1). Для каждого режима есть две независимые области памяти. Одна для пользовательской программы, вторая для программы чтения/записи прошивки (загрузчик1). Если после сброса на 12-ом выводе низкий логический уровень - выполняется пользовательская программа. Если же после сброса на 12-ом и 9-ом выводах высокий уровень, то выполняется программа загрузчика1. Память загрузчика1 может быть записана только с помощью параллельного программатора и не доступна из программы пользователя. Пользовательская же область памяти может быть перезаписана как загрузчиком1, так и самой пользовательской программой. В пользовательской памяти (в начале блока b3) имеется код загрузчика2 который может копироваться в оперативную память и оттуда выполняться. Так вот, выше указанными командами активируется загрузчик2. Его функционал меньше чем у загрузчика1, он может только стирать и записывать, но не может считывать память. Тем не менее стирание и запись выполняются с проверками. После стирания какой либо области памяти устанавливается флаг, который не позволит выйти из загрузчика. Насколько я понимаю это сделано для защиты, так как выполняясь из оперативной памяти загрузчик2 может стереть себя из флэш-памяти (но всегда остаётся загрузчик1). Чтобы сбросить этот флаг нужно без ошибок выполнить хотя бы одну команду записи (запись выполняется блоками по 16 байт). После чего можно покинуть режим загрузки (будет выполнен переход к началу пользовательской программы, что эквивалентно сбросу). В режиме загрузчика2 доступны следующие команды: Спойлер
Код:
Bootloader commands: CMD DIR DATA Description ---------- 0xA0 w word erase block (ba: 1800; bb: 1000; ...) 0xA1 w word clear status register (password cdab) 0xA2 w word reset (password cdab) 0xA3 w block write 16 bytes starting from ADDR 0xA4 w word set ADDR 0xA5 r word read status register 0xDD w word ??? 0xFF w word unlock cmd (password cdab)
Перед выполнением команд A0..A5 также нужно отправлять команду ff с паролем cdab. Память стирается по-блочно. Чтобы стереть определённый блок нужно записать адрес начала блока в команду A0. После этого регистр состояния примет значение 0x81. СпойлерФлаги регистра состояния: бит7 (старший бит): 1 == "готов", 0 == "занят"; бит6: не задействован; бит5: 1 == стирание прервано с ошибкой, 0 == норма; бит4: 1 == запись прервана с ошибкой, 0 == норма; бит3: не задействован; бит2: не задействован; бит1: 1 == не удалось выполнить запись, 0 == норма; бит0: 1 == стёрто, нужна запись, 0 == норма. Нормальное значение регистра состояния - 0x80. Пример стирания области памяти ba:
Код:
smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a0 -w 1800
Перед командой записи нужно сбрасывать регистр состояния (команда A1). Этой командой сбрасываются только биты 7,5,4, а биты 1 и 0 можно сбросить только успешной записью памяти. Адрес начала записи устанавливается командой A4. После каждой записи адрес автоматически увеличивается на 16. Пример записи 32 байт в начало блока памяти bb с последующим выходом из загрузчика: Спойлер
Код:
smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a1 -w cdab smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a4 -w 1000 smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a3 -w 3cc30000ffff0000ffffffffffffffff smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a1 -w cdab smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a3 -w 1a01fffffffffffffffff0ffffffff00 smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c a2 -w cdab
Считать содержимое любой ячейки памяти (SFR, RAM, ROM, DataFlash) можно с помощью скрытой команды FD в обычном режиме работы. Сначала в команду записывается адрес, а затем с неё считывается значение памяти:
Код:
smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c fd -w 014a smbusb_comm -a 16 -c ff -w cdab smbusb_comm -a 16 -c fd -r 2 005a
Таким образом можно снять дамп с любой области памяти.
Это то что касается загрузчика. Для сброса нужно подготовить дамп для прошивки dataflash. Как это сделать описано в одном из предыдущих сообщений. Единственное дополнение касательно ёмкости батареи было сказано в прошлом сообщении. В моём случае дамп для сброса называется ba_reset.bin (см. архив m37512_fc200.zip). Думаю, его можно брать за основу, только заменить значения переменных по смещению 0x0010, 0x002E, 0x003D, 0x004C, 0x005B, 0x006A, 0x0079 на значения из своего контроллера. Далее подсчитать контрольную суму с помощью скрипта crc.py (он интерактивный, нужно просто выбрать файл) и записать её по смещению 0x00D8. Чтобы сбросить контроллер нужно стереть dataflash (блоки ba и bb) и записать в область ba (или bb, на самом деле нет разницы) подготовленный дамп памяти. Всё это делает скрипт reset.py.
Пожалуй, больше по этому контроллеру не может возникнуть никаких вопросов. )) В ваших выкладках много описаний (обозначения областей памяти, описание бмт регистра состояния, и пр...) перекликается с официальным мануалом по этому контроллеру. Вы брали за основу этот документ? https://drive.google.com/file/d/1TyTBws ... sp=sharing
Alex_PP, да, всё верно. В приложенном мною ранее архиве m37512_fc200.zip в каталоге datasheets содержатся документы, которые были использованы для анализа прошивки.
k0stya, получается в бутром входить и вовсе не обязательно, если нет желания считать или записать прошивку? Для данных EEPROM есть команды, доступные из под запущеной прошивки (нормального режима)? Если так, это очень хорошо. А вот что касается 2го загрузчика, получается, в режиме прошивки можно загрузить лишь его, из области b3? А он, по вашим словам (может это есть в мануале, не переводил), не может читать, а только лишь для записи данных? Верно?
получается в бутром входить и вовсе не обязательно, если нет желания считать или записать прошивку?
Необходимость загрузки в бутром может возникнуть если прошивка в пользовательской памяти повреждена и нет возможности вызвать загрузчик2. Загрузчик2 является частью пользовательской прошивки и может переписать как dataflash, так и обычную flash память.
Alex_PP писал(а):
А вот что касается 2го загрузчика, получается, в режиме прошивки можно загрузить лишь его, из области b3? А он, по вашим словам (может это есть в мануале, не переводил), не может читать, а только лишь для записи данных? Верно?
Верно.
Alex_PP писал(а):
Для данных EEPROM есть команды, доступные из под запущеной прошивки (нормального режима)?
Читать данные можно в обычном режиме работы контроллера. Чтобы стереть/записать EEPROM (в документации - dataflash) нужно вызывать загрузчик2.
Необходимость загрузки в бутром может возникнуть если прошивка в пользовательской памяти повреждена и нет возможности вызвать загрузчик2.
Ну этот случай редко встречается в повседневном ремонте.
k0stya писал(а):
Читать данные можно в обычном режиме работы контроллера. Чтобы стереть/записать EEPROM (в документации - dataflash) нужно вызывать загрузчик2.
А вот это неудобно, потому что перед тем как загрузить память данных eeprom (dataflash), всегда приходится сначала ее выгрузить из контроллера, и исправить. Получается, bootloader2 отпадает. А вызвать основной можно лишь аппаратно, пином контроллера. Это не любой может сделать, хотя кнш если уж человек полез в АКБ, надо быть готовым и к такому. ))
Доброго времени суток. Нужна помощь. Разобрал батарею старого T61 внутри контролер собран на A2169 верхняя строка A24063000F средняя строка. Goole не нашел совпадений может кто встречал что это за контролер.
нашел вот такую инфу по bq8050 СпойлерW3 Texas anny INSTRUMENTS
18 SHA-1 Authentication
18.1 Description
For authenticating the battery pack the bq8050 uses a SHA-1 cryptographic hash function with a 128 bit split key (64 bits per key). More complete explanations of the SHA-1 algorithm are available on the
A modified form of the SHA-1/HMAC provides the authentication function of the bq8050. Both the host and the bq8050 share two 64-bit keys used in the authentication calculation. To authenticate a battery pack, the host writes a random 20-byte message to the bq8050. The bq8050 calculates the HMAC digest in less than 50ms, replacing the random message sent by the host with the HMAC result. To complete the authentication process, the host computes the HMAC function with the same 20-byte random
message originally written to the bq8050. The result is compared to the HMAC result computed by the bq8050. If the values match, the pack is authenticated.
. 18.2 Key programming
The bq8050 allows each of the 2 keys to be programmed individually enabling each one to be able to be
programmed at different stages of the battery pack production. EG: k; at Texas Instruments and k, at the pack maker.
Each key consists of 64 bits providing a total key length of 128 bits which is programmed through 2 separate programming events with two separate internally generated locking bytes.
The default keys are written using the Write_Default_Keys ROM command. This command is only available if NO lock byte has been set AND the device has been reset.
KEY1 must be programmed first and during this programming the internal lock byte is set. Until a POR occurs the Write_Default_Keys command can be used to reset the keys to correct any programming errors. Once the device is reset and the newly programmed key is locked and cannot be re-programmed.
The 1" default key is cb a4 cb a4 cb a4 cb ad (in hex) and the 2™ default key is c3 17 c3 17 c3 17 ¢3 17 (in hex). However, the lock bytes will NOT have been set so the key can be modified.
Each key programming requires a known 160 bit message to be written to the bq8050 which pads this up to 512-bits. The bq8050 will run this message through a SHA-1/HASH cipher, take the lower 64 bits of the result and encrypt it prior to being written to the secure data flash.
не актуально, рискнул и перебрал свою родную батарейку на bq20z45.... в результате 6 часов автономной работы! с саньо было 5 часов, но она со ста до 6 процентов падала за 20 минут и весела еще около 5 часов на 6%, но за три цикла так ни чего и не пересчитала...
Сейчас этот форум просматривают: Vovan_sar и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения