воскресенье, 6 декабря 2020 г.

amdgpu pro виртуалка и Davinci Resolve

Сделал виртуалки с пробросом видюхи AMD RX 580 на linux.

На kubuntu 20.04.1 при установке amdgpu-pro вообще больше не грузится система. В recovery грузится, но там неправильное разрешение. Муть какая-то. И это называется поддерживаемый дистрибутив у amd. Фу. Не смог установиться amdgpu-pro-dkms. После полного обновления системы тоже не смог.

Решил попробовать с CentOS. Тоже огрёб проблем. Чтобы установить, скачиваем dvd iso, а не base, т.к. на base нет возможности выбрать локальный источник для установки.

Установить туда kde у меня пока не получилось, почему-то не ставится. Пытался сделать как сказано в этом видео. https://www.youtube.com/watch?v=VEqYvSwvW14 Говорило This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Какого фига ему про какую-то подписку red hat надо не понимаю.

В общем, решил пока что с этим поганым gnome установить.

Установил amdgpu-pro, davinci-resolve (через run файл). При запуске dr жаловался что не может найти libGLU.so.1. Оказалось, надо ещё установить mesa-libGLU.

И всё равно dr падает в centos, зараза. Что-то видимо ему не нравится в драйверах. И ещё onboarding экран был не прогружен (всё белое окошко было).

Надо всё-таки ковырять с ubuntu, т.к. на centos 8 там вообще ядро ещё какое-то из 4-ых. Старьё. На ubuntu хоть 5-ое, но не самое свежее конечно.

суббота, 26 сентября 2020 г.

Заметки по виртуалке с пробросом видюхи

Моя аппаратная конфа была на видео.



0000:00:14:0 Intel Corporation 200 Series/Z370 Chipset Family USB 3.0 xHCI Controller
Intel'овский usb контроллер без проблем пробросился. При этом на хосте остаётся Asmedia'вский usb контроллер (к которому можно подключить хаб монитора и таким образом "размножить" кол-во оставшихся портов usb на хосте.

0000:04:00:0 ASMedia Technology Inc. ASM2142 USB 3.1 Host Controller
А вот Asmedia'вский usb контроллер не пробрасывается. Как только запускаю машину, она сразу паузится. И можно только выключить её через Force OFF.

Длинный pcie и втрой длинный pcie к сожалению в одной группе. В третий длинный вставить ничего не могу, т.к. не влезает туда видюха (из-за дна корпуса).



вторник, 22 сентября 2020 г.

USB 3.0 скорость как у USB 2.0

Странный hdd от ADATA. Подключал в порт usb 3.0 на компе - вообще не распозновался. Ковырялся в настройках bios в поисках xhci handoff - такой опции не нашёл на десктопе.

Потом обнаружил, что если вставить и подождать секунд 20-30, то он распознаётся.

Провёл тест скорости записи вот такой командой

 dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress

когда диск был в usb 2.0 и в usb 3.0. Забавно, но в usb 2.0 он показал скорость чуть выше чем даже в 3.0 (37,8 MB/s против 34,4 MB/s).

Очевидно, что диск в usb3.0 работает на скорости 2.0. Так и есть, в lsusb --tree
можно увидеть, что он распознался со скоростью 480M в обоих случаях:
    |__ Port 3: Dev 8, If 0, Class=Mass Storage, Driver=usb-storage, 480M

Переключил в asmedia порт, в lsusb --tree распознался как 5000M

Это, конечно, лучше. Но скорость выросла только до 66,4 MB/s. Т.е. где-то всего в два раза, а не в 10.

вторник, 15 сентября 2020 г.

Logitech F710 не работает вибрация в игре

 В linux в oddworld new and tasty на геймпаде Logitech Wireless Gamepad F710 не работает вибрация. Пробовал по-разному: геймпад переключал в DirectInput, в Xinput. В настройках игры как отключал вибрацию и галочку XInput, так и включал. Не работало никак.

При этом на винде в этой игре на этом геймпаде вибрации тоже нет, но на Dualshock 3 (через SCP toolkit) вибрация есть! Чтобы включить вибрацию, достаточно начать медитириовать.

Подозреваю, что в игре просто захардкодили поддержку именно на xbox360 геймпад. Потому что ds3 под него мимикрирует, и он работает на винде.

Значит надо проверить на Linux через xboxdrv чтобы F710 прикинулся контроллером от бокса360. И проверить, заработает ли вибрация.

А есть ли хоть одна игра, которая бы доказывала что вибрация на F710 вообще работает? Да. Например, Hitman 2, когда геймпад находится в режиме XInput.

xboxdrv на arch linux чего-то не собирается из aur пока.
После того как разберусь с установкой xboxdrv, продолжу по этой инструкции: https://steamcommunity.com/app/221410/discussions/0/558748653738497361/

Но как вариант, можно проверить то же самое на винде. Т. е. надо найти прпограммку, которая позволяет эмулировать настоящий ге1мпад от бокса 360. Думаю, это сработает.


На Linux в режиме эмуляции бокс контроллера в Big picture (https://steamcommunity.com/app/221410/discussions/0/558748822569010381/) вибрации нет всё равно ни на ds3, ни на f710, хотя в настройках контроллера в стиме такая опция присутствует. Странно.

Что интересно, игра воспринимает в этом режими виртуальный бокс360 контроллер как реальный, и настройка раскладки недоступна (серенькая). Это значит, что когда стим биг пикча не эмулирует бокс360, игра видит что геймпад не боксовый. Ну и правильно, он и не должен быть боксовым, он же логитеч. Просто с поддержкой xinput. P.S. А в стим биг пикчер он как раз и воспринимается как xbox360, а не как логитеч. Ну почему везде такая кривота?

 Игра кривая просто, зачем она ожидает именно 360. Т.е. меню-то вроде как и поддерживает разные варианты контроллеров, но по факту это не работает. Плюс ко всему, нафига вообще делать настройку переключения управления с клавиатуры или с геймпада. Можно же сделать было чтобы одновременно работало бы с разных вводов.

Вот здесь: https://overclockers.ru/blog/ZAMHome/show/21167/emuljacija_xboxkontrollera_dlja_gejmpadov_bez_apparatnoj_podderzhki_xinput_i_vsjo_chto_s_etim_svjazano прочитал что на unity играх метод x360ce работать не будет. И конкретно oddworld там в списке неподдерживаемых игр есть.

x360ce - это похожий вариант на xboxdrv, только для винды.

Чтобы запустить игру на русском, как на винде, надо просто в библиотеке стим пкм по игре, вкладка язык - выбрать русский.

https://youtu.be/F9waA67lDcc - тут чувак играл со стим контроллером на линуксе на nvidia. Тоже серенький пункт меню настроек раскладки геймпада (т.е. стим пад в стим биг пикча представляется игре всё также как бокс360 контроллер), глюки с непрорисовынными бегущими строками такие же. Т.е. это даже не от языка зависит - у него на английском игра. И скорее всего дело не в производителе видеокарт (т.к. думал что может это амд что намудрили).

В виндовой версии в настройках раскладки геймпада есть пункт "тип геймпада" сверху. Так вот, там работает везде вибрация, какой бы пункт не выбирал. А на линукс версии доступен только вариант Индивидуальный, и там вибрация не работает.

Если подключены два геймпада, то колдуя на одном геймпаде, вибрация на другой передаётся.

Ещё заметил, что в меню в геймспике нет вибрации при колдовании, но есть когда просто уже заходишь в игру (когда камера пролетает через черную дыру).

https://steamcommunity.com/app/314660/discussions/0/405691147603894239/ - тут написано, что F710 официально поддерживается.


https://steamcommunity.com/games/314660/announcements/detail/234522998930417128 - тут написано что XInput - чекбокс, позволяющий поддерживать официальные XINput устройства. Всё равно не очень понятно, т.к. она ни на что не влияет.

https://steamcommunity.com/app/314660/discussions/1/2950377478181689884/ - создал тему

А будет ли работать вибрация на linux ести ds3 через xboxdrv сделать mimick 360?

суббота, 1 августа 2020 г.

Меняем порядок загрузки через ipmitool

Как таковой, как поменять порядок загрузки я пока не нашёл. Есть возможность у supermicro просто сдампить текущий конфиг в текстовом виде (через supermicro update manager), потом его поменять, потом залить обратно.

Но я нашёл интересную штуку - можно загрузить сервер в нужный пункт единожды, типа как bootnext в efibootmgr. При этом это должно работать также и для legacy режима загрузки.
Есть нюансы - непонятно пока как выбрать конкретный диск для загрузки, например. Ну и то что это работает только на серверах, потому что на десктопах нет ipmi.

В мануале ipmitool нашёл про эту возможность аж в нескольких местах.

1) ipmitool chassis bootdev
2) ipmitool chassis bootparam - отличается от предыдущей только тем, что параметры с префиксом force_, типа как force_bios, тогда как в предыдущей - просто bios

3) ipmitool mc chassis bootdev <device> опции. Можно например посмотреть ipmitool mc или bmc chassis bootdev
4) ipmitool mc chassis bootparam set <device> опции. Здесь девайсы с префиксом force_, в отличие от предыдущей команды. А ещё есть опции, ассоциированные с  очисткой BMC Boot Valid Bit. можно очищать valid bit при перезагрузке по питанию, по кнопке reset или мягкой перезагрузке, по таймауту, по какому-то PEF. Но и вообще, кто и где смотрит этот value bit не совсем понятно пока. Догадываюсь, что его смотрит прошивка системы при загрузке, и если выставить устройство в bootnext, и наступит какое-то условие, например, перезагрузка по кнопке, то если bootnext был выставлен с соответствующим параметром сброса, то система не будет учитывать это устройство в качестве приоритетной прогрузки. Но я это не проверял.




При выполнении вариантов 3 и 4 было написано  Invalid mc/bmc command: chassis
Видимо, там поехало форматирование. Либо я скосил. Но параметры описаны действительно в четырёх местах. Возможно второй раз - это более подробное уточнение первого. В общем, посмотреть повнимательнее.

Кстати, вот что выдало bootdev none options=help
Legal options settings are:
       help:   print this message
       valid:  Boot flags valid
       persistent:     Changes are persistent for all future boots
       efiboot:        Extensible Firmware Interface Boot (EFI)
       clear-cmos:     CMOS clear
       lockkbd:        Lock Keyboard
       screenblank:    Screen Blank
       lockoutreset:   Lock out Resetbuttons
       lockout_power:  Lock out (power off/sleep request) via Power Button
       verbose=default:        Request quiet BIOS display
       verbose=no:     Request quiet BIOS display
       verbose=yes:    Request verbose BIOS display
       force_pet:      Force progress event traps
       upw_bypass:     User password bypass
       lockout_sleep:  Log Out Sleep Button
       cons_redirect=default:  Console redirection occurs per BIOS configuration setting
       cons_redirect=skip:     Suppress (skip) console redirection if enabled
       cons_redirect=enable:   Suppress (skip) console redirection if enabled

Интересно. Так можно ли всё-таки задать на постоянку свой boot order с опцией persistent?
И в режиме uefi можно загрузиться с опцией efiboot? Попробовал
 chassis bootdev disk options=efiboot
Но эффекта не дало. Всё равно грузится в legacy. Возможно, надо в bios включить uefi.
Нашёл причину - это баги в ipmitool:
https://bugs.launchpad.net/ironic/+bug/1611306
https://github.com/ipmitool/ipmitool/issues/163
Фиксы уже в коде, но новую версию пока не релизнули. Пока что можно обойти это, передавая байты (которые ipmitool как раз генерирует неправильно):
ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_USER -f $IPMI_PASSWORD_FILE raw 0x00 0x08 0x05 0xa0 0x08 0x00 0x00 0x00 # загрузиться по сети в режиме EFI

У меня получилось загрузиться в uefi cdrom (в arch linux iso через ipmi virtual media) когда я последовательно выполнил сначала:
   ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis bootdev cdrom options=persistent,efiboot - тут я думал что уже должно загрузиться, но нет.
а потом:
  ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis bootdev cdrom
  ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis power reset

И на моё удивление, загрузилось в uefi cdrom. Правда долго загружалось как-то, с несколько раз появлением заставки. Но это обычное дело. На плате X9SCL на Supermicro проверял.

Еще кстати непонятно, что за request Safe Mode и Force boot from Diagnostic Partition.
Вот тут в комментах https://ma.ttwagner.com/ipmi-trick-set-the-boot-device/ нашёл что можно использовать такие команды: chassis bootparam get 5
В мануале есть вот это:
get <param #>

                                  Get boot parameter. Currently supported values for <param #> are:

                                  0 - Set In Progress

                                  1 - Service Partition Selector

                                  2 - Service Partition Scan

                                  3 - BMC Boot Flag Valid Bit Clearing

                                  4 - Boot Info Acknowledge

                                  5 - Boot Flags

                                  6 - Boot Initiator Info

                                  7 - Boot Initiator Mailbox
Но команда get 2 и get 1 мне ничего про service partition не выдали на supermicro серваке. Unknown было.

https://man.archlinux.org/man/ipmitool.1 - вот тут появился нормально отформатированный man

понедельник, 27 апреля 2020 г.

Заметки по FreeSync мониторам для Linux

Чтобы включить freesync, монитор должен быть подключен либо к amd карте (интегрированной или встроенной, но поддерживающей этот режим), либо к nvidia серии 10+. Intel пока не поддерживает Freesync.

Свежее сообщение об intel: https://www.dell.com/community/XPS-Desktops/FreeSync-G-Sync-monitors-compatible-with-Intel-UHD-630-video/td-p/7486449 - февраль 2020
https://www.quora.com/What-is-AMD-free-sync-on-monitors-and-does-it-work-with-Intel-NVIDIA - декабрь 2019

> AMDs own workaround for Adaptive Sync over HDMI
Это FreeSync via HDMI. Используется проприетарный протокол AMD. Работает только на windows. В linux в open source драйвер включать не будут. В linux в amdgpu-pro libgl может быть и включат потом. Как отличить эту технологию? Наверное по спецификации монитора: если он заявляет поддержку FreeSync, при этом версия hdmi ниже 1.2, значит это оно.
В общем, непонятно, стоит ли полагаться на будущее этого варианта. Если покупать моник с нуля, то лучше оттклкиваться сразу с hdmi версией 1.2.

>With HDMI 2.1 there will be an official Adaptive Sync alternative over HDMI, called VRR (Variable Refresh Rate).
Это HDMI VRR. Официално пока нет, ждём когда утвердят стандарт.
https://www.phoronix.com/scan.php?page=news_item&px=AMD-FreeSync-2019-Update
But as for the formal HDMI Variable Rate Refresh (VRR) support, they note it's "pending" but held up by a HDMI VRR conformance test suite being released. So hopefully once that CTS is available, HDMI VRR will be flipped on for Linux users wishing to enjoy Adaptive-Sync/VRR functionality for HDMI displays.
Так что пока ждём. На Linux поддерживаться будет.

Что по Display Port VRR?
Как я понял, так же как и в случае с hdmi. Есть решение через проприетарный протокол, а есть стандарт DP supported via Adaptive Sync spec. Как отличить? По идее, версия DP должна быть определённой.

Какие продукты поддерживают технологию AMD FreeSync™?
К совместимым графическим процессорам относятся все видеокарты AMD Radeon™, начиная с серии Radeon™ HD 7000, выпущенной в 2012 году, и все более новые потребительские видеокарты Radeon.

Можно ли использовать технологию AMD FreeSync™ при подключении через HDMI®?
Да, технология FreeSync поддерживает интерфейс HDMI с самого начала. Многие дисплеи с сертификацией FreeSync поддерживали технологии использования переменной частоты обновления экрана по HDMI задолго до появления HDMI 2.1 и принятия стандарта HDMI VRR.  Покупка дисплея с сертификацией FreeSync, поддерживающего FreeSync по HDMI, позволяет использовать преимущества переменной частоты обновления экрана, даже если дисплей не поддерживает стандарт HDMI 2.1.

А также на этой странице https://wiki.archlinux.org/index.php/Variable_refresh_rate есть интересная инфа по редактированию EDID. Там для разгона монитора применяется, но может пригодиться и в других случаях.

четверг, 23 апреля 2020 г.

I have published my script here:
https://github.com/Ashark/supermicro-oob-activate/blob/master/supermicro-oob-activate

But just in case of DMCA takedown, I will publish the code here as a backup:
#!/bin/bash
# supermicro-oob-activate
#
# This script will autogenerate and activate a SFT-OOB-LIC key for your SuperMicro server,
# so you can perform out-of-band bios update with supermicro-update-manager.

# You should get a BMC mac. You can go to the ipmi web page, but it is inconvenient, because you want to make all things in place via your terminal.
# supermicro-update-manager has a function CheckAssetInfo, which will show you the IPMI mac. But unfortunately, you need OOB node product key to be
# already activated for using this function. However, there is another way how you can get it - via ipmitool.

IPMI_HOST=$1
IPMI_USER="ADMIN"
IPMI_PASSWORD_FILE="$HOME/.private/ipmi-pw.txt"

BMC_MAC=$(ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_USER -f $IPMI_PASSWORD_FILE lan print | grep "MAC Address" | sed "s/MAC Address             : //")
# -I lanplus is required for some motherboards. See https://www.supermicro.com/support/faqs/faq.cfm?faq=23196

LIC_KEY=$(echo -n $BMC_MAC | xxd -r -p | openssl dgst -sha1 -mac HMAC -macopt hexkey:8544E3B47ECA58F9583043F8 | awk '{print $2}' | cut -c 1-24  | fold -w4 | paste -sd'-' -)

# echo Checking licence keys before setting licence key:
# supermicro-update-manager --no_banner -i $IPMI_HOST -u $IPMI_USER -f $IPMI_PASSWORD_FILE -c QueryProductKey
echo Setting licence key:
supermicro-update-manager --no_banner -i $IPMI_HOST -u $IPMI_USER -f $IPMI_PASSWORD_FILE -c ActivateProductKey --key $LIC_KEY
# echo Checking licence keys after setting licence key:
# supermicro-update-manager --no_banner -i $IPMI_HOST -u $IPMI_USER -f $IPMI_PASSWORD_FILE -c QueryProductKey


# Usage:
# $ ./supermicro-oob-activate ipmi.yourdomain.com
# Checking licence keys before setting licence key:
# Number of product keys: 0
# Setting licence key:
# Node product key (OOB) is activated for ipmi.yourdomain.com.
# Checking licence keys after setting licence key:
# [0] OOB
# Number of product keys: 1

# Legality:
# This is not explicitly allowed by SuperMicro, but in reality, nobody cares, because nowadays REDFISH allows much of the functionality of SuperMicro update manager for free,
# (including bios update). This thing is only useful for the old generation of servers without REDFISH.
# The algorithm was kindly provided by white hat hacker Peter Kleissner.
# See this if you are interested: https://peterkleissner.com/2018/05/27/reverse-engineering-supermicro-ipmi/