rockowitz / ddcutil

Control monitor settings using DDC/CI and USB
http://www.ddcutil.com
GNU General Public License v2.0
955 stars 39 forks source link

Xiaomi Curved Screen OSD stopped working #153

Closed norpol closed 3 years ago

norpol commented 3 years ago

Hey, after playing with power modes and brightness via ddcutil I can't access the OSD of my monitor anymore.

Previously I would push the "menu" button and I would be presented with an OSD where I can do the monitor settings from hand.

Setting the "Restore Factory Defaults" value didn't help. I couldn't find any information on possible resetting the monitor preferences via button-key combination.

Do you have any idea or hints how I can recover from such a situation?

rockowitz commented 3 years ago

Does your monitor implement feature xCA - OSB button control?

If your VCP version is 2.2 (quite possible since curved monitors are recent) it's a bit more complicated than this, but basically the values are:

If this doesn't solve your problem, please run "ddcutil probe" for the monitor and send the output as an attachment.

norpol commented 3 years ago

Thank you for your response.

If I'm running, I receive this error below.

ddcutil setvcp 0xCA x01
# Verification failed for feature ca

Probe output lists

VCP code 0xca (OSD ): OSD Enabled (sl=0x02)

Attached are both ddcutil probe and ddccontrol -p -c -d outputs.

I'm using ddcutil setvcp 0xD6 "01", ddcutil setvcp 0xD6 "04" and ddcutil setvcp 0x10 "10" in my scripts.

rockowitz commented 3 years ago

First, an apology, which I'm afraid confused things. The values for feature xCA are

In the probe output, the capabilities string does not include feature xCA. Yet probe of xCA (i.e. getvcp) reports the sensible value of x02 (enabled). It does not set the unsupported feature bit in the reply. Interestingly, trying to setvcp feature xCA to x01 is rejected, so maybe feature xCA is half-supported, i.e. it can be read but not changed.

Bottom line: the monitor is reporting that OSD is enabled.

I have no idea why changing the value of feature xD6 between x01 and x04 (twiddling DPM on/off) should affect whether the OSD is enabled. All I can say as a vague generality is that changing the value of one feature can affect others. Such interactions are not documented. I've only been interested in the interactions of colour related features.

I'm assuming that when you say you've tried resetting factory defaults, you set feature x04 to a non-zero value.

I'm afraid that all I can suggest at this point is unplugging the monitor and let it sit for a bit. This is the first instance I've ever heard of/experienced where changing VCP values puts the monitor into an unrecoverable state.

norpol commented 3 years ago

Hey, thank you for your quick reply again. I did not experience these issues immediately but just after the next day, given your reply I can only assume that the sudden OSD functionality being gone does not relate to VCP control values but perhaps some faulty unit.

I'll try your suggestion over night and hope for the best.

I'm closing this now, perhaps if someone will encounter a similar issue they will find this conversation as a reference.

If I can contribute with any other helpful values for development please let me know.

Update: Disconnecting from power & display port over night didn't resolve the issue.

rockowitz commented 3 years ago

What precisely is your monitor model? It's unclear from the EDID.  I'd like to take a look at the manual.

On 11/19/20 7:12 PM, Phi|eas |ebada wrote:

Hey, thank you for your quick reply again. I did not experience these issues immediately but just after the next day, given your reply I can only assume that the sudden OSD functionality being gone does not relate to VCP control values but perhaps some faulty unit.

I'll try your suggestion over night and hope for the best.

I'm closing this now, perhaps if someone will encounter a similar issue they will find this issue anyway.

If I can contribute with any other helpful values for development please let me know.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/rockowitz/ddcutil/issues/153#issuecomment-730716381, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADMGY3TD4I3JMQB7SILFML3SQWX6LANCNFSM4T3PSOHA.

norpol commented 3 years ago

Oh, sorry I missed your response. Xiaomi only call the screen "Mi Curved Gaming Monitor 34", I guess from the manual PDF filename it's XMMNTWQ34.

The manual mi_xmmntwq34.pdf is just about build up and some basic firmware features.

m49n commented 2 years ago

didn't find a solution?

eggsampler commented 2 years ago

I have had a similar issue after attempting to use the power mode to turn the monitor off - no access to osd, buttons only turn the monitor black for a second.

No vcp setting brings the osd back or restores button functionality. I have left it off for many days, attempted turning on while holding all of the button combos, no luck.

For anyone finding this issue, I would strongly recommend not using any ddc/ci commands with this monitor. If you have, the monitor still works but you will not have access to the so won't be able to change the input or any settings. If it's in warranty period, return it.

norpol commented 2 years ago

I've successfully returned it back then - I assumed it was an unrelated issue, I've been using ddcutil for many years on many screens and never encountered this bug before. Sorry about your problem. Maybe we can update ddcutil to block certain monitors/actions?

rockowitz commented 2 years ago

@norpol I'm not sure about blocking, but as a first step I've implemented a monitor quirk table that causes detect to append a warning message for problematic monitors. Its initial member is the Xiaomi monitor. The implementation is in the current ddcutil development branch, 1.2.3-dev.

Note that detection entails reading feature values x00 (which provides useful information even though the feature should not exist) and feature xDF (VCP version). If there are monitors for which reading any value can be fatal the check would have to be implemented differently.

I don't have a copy of the EDID for this monitor, so I may not have the model name exactly correct. Can someone with this monitor send me the output of ddcutil detect --verbose so I can be sure of the Xiaomi monitor identifiers to use in the table? Or at least confirm that ddcutil detect --verbose warns about the monitor.

ZarredFelicite commented 2 years ago

Display 2 I2C bus: /dev/i2c-8 Driver: nvidia I2C address 0x50 (EDID) responsive: true Is eDP device: false Is LVDS device: false /sys/bus/i2c/devices/i2c-8/name NVIDIA i2c adapter 8 at 2d:00.0 PCI device path: /sys/devices/pci0000:00/0000:00:03.1/0000:2d:00.0/i2c-8 EDID synopsis: Mfg id: XMI - UNK Model: Mi Monitor Product code: 13380 (0x3444) Serial number: Binary serial number: 0 (0x00000000) Manufacture year: 2020, Week: 16 EDID version: 1.4 Extra descriptor: Video input definition: 0xb5 - Digital Input (DisplayPort), Bit depth: 10 Supported features: DPMS active-off Digital display type: RGB 4:4:4 + YCrCb 4:2:2 Standard sRGB color space: True White x,y: 0.313, 0.329 Red x,y: 0.677, 0.314 Green x,y: 0.286, 0.637 Blue x,y: 0.136, 0.077 Extension blocks: 2 EDID source: I2C EDID hex dump: +0 +4 +8 +c 0 4 8 c +0000 00 ff ff ff ff ff ff 00 61 a9 44 34 00 00 00 00 ........a.D4.... +0010 10 1e 01 04 b5 50 21 78 3b 64 f5 ad 50 49 a3 22 .....P!x;d..PI." +0020 13 50 54 ad cf 00 71 4f 81 c0 81 40 81 80 95 00 .PT...qO...@.... +0030 a9 c0 b3 00 d1 c0 22 68 70 a0 d0 a0 29 50 30 20 ......"hp...)P0 +0040 35 00 1d 4e 31 00 00 1a 20 fd 70 a0 d0 a0 3c 50 5..N1... .p...<P +0050 30 20 35 00 1d 4e 31 00 00 1e 00 00 00 fd 00 30 0 5..N1........0 +0060 90 a0 a0 3c 01 0a 20 20 20 20 20 20 00 00 00 fc ...<.. .... +0070 00 4d 69 20 4d 6f 6e 69 74 6f 72 0a 20 20 02 ac .Mi Monitor. .. VCP version: 2.1 Controller mfg: Mstar Firmware version: 0.0 Monitor returns DDC Null Response for unsupported features: false WARNING: Setting feature values has been reported to permanently cripple this monitor!

rockowitz commented 2 years ago

@norpol Can you describe for @Diegohead what you did to recover your monitor?

norpol commented 2 years ago

@rockowitz and @Diegohead I'm very sorry but I simply returned the screen as it showed up in the first few days.

HeckfyCU commented 1 year ago

Hello. I'm having same issues, may be someone have some kind of remedy for this issue?

rockowitz commented 1 year ago

@HeckfyCU First, let's make sure this is the same monitor as previously discussed on this thread. Please execute ddcutil detect --verbose and ddcutil environment --verbose and submit the output as attachments. There will undoubtedly be lots of errors, but the output will still be useful.

HeckfyCU commented 1 year ago

@rockowitz I would like to, but I don't have linux installed, only windows and Mac OS. But I used similar tools to control my display through ddc ci like https://www.nirsoft.net/utils/control_my_monitor.html and https://github.com/chrismah/ClickMonitorDDC7.2 and now i also can't turn on osd. The only thing I managed to do is reset language options, so now display enters energy saving using Chinese language.

Also info from other people:

_https://stackoverflow.com/questions/64369071/monitor-buttons-acting-totally-incorrectly-trying-to-switch-input-source-inste https://www.reddit.com/r/ultrawidemasterrace/comments/ll2a36/cant_access_osd_anymore_on_xiaomi_mi_curved/ https://superuser.com/questions/1615554/monitor-buttons-stop-working-after-ddc-ci-control_

If it's of any use here are reports generated by this apps

VCP-codes export:

(prot(monitor)type(lcd)MStarcmds(01 02 03 07 0C E3 F3)vcp(02 04 05 08 10 12 14(05 08 0B 0C) 16 18 1A 52 60( 11 12 0F 10) AA(01 02) AC AE B2 B6 C6 C8 C9 D6(01 04 05) DC(00 02 03 05 ) DF FD)mccs_ver(2.1)mswhql(1))
Monitors deliver a capability string that defines supported VCP codes, but often the string is partially incorrect, some VCP-codes are not working, and some other working VCP-codes are missing. A few monitors do not deliver a capability string, but nevertheless some VCP-codes are working. Some monitors support only very few VCP-codes or are ignoring MCCS (VCP-codes) totally. ClickMonitorDDC automatically deals with these problems, so you should close this window.

Export from logs

<set mUID0="XMI3444#5&2338f071&0&UID33029"/>
<set mname0="MiMonitor"/>

One more app

softMCCS Report - 15.01.2021
**************************************

Platform
  OS version and build................ 10.0 Build 22621 
  Physical memory..................... 33476,53MB
  Virtual memory...................... 24436,16MB
  Screen resolution................... 3440x1440
  Device data......................... 0x220810DE.00.01.01
  Program version..................... 2.5.0.1087

Basic display information
  Product name........................ XMI Mi Monitor
  Product ID.......................... XMI3444
  Serial number....................... n/a
  Manufactured........................ 2019 ISO week 40
  Preferred timing.................... 3440x1440 at 50Hz
  DDC/CI.............................. Supported
  MCCS version........................ 2.1
  Device controller................... Mstar 86, Level 0

EDID information
  Version............................. 1.4
  Extension blocks.................... 2
  Raw data............................
    00: 00FFFFFFFFFFFF00 61A9443400000000
    10: 281D0104B5502178 3B64F5AD5049A322
    20: 135054ADCF00714F 81C0814081809500
    30: A9C0B300D1C02268 70A0D0A029503020
    40: 35001D4E3100001A 20FD70A0D0A03C50
    50: 302035001D4E3100 001E000000FD0030
    60: 90A0A03C010A2020 20202020000000FC
    70: 004D69204D6F6E69 746F720A20200295

MCCS capabilities string
  Parsing errors...................... 0
  Recoverable errors.................. n/a
  Capabilities string.................
    (prot(monitor)type(lcd)mstarcmds(01 02 03 
    07 0c e3 f3)vcp(02 04 05 08 10 12 14(05 08 
    0b 0c) 16 18 1a 52 60( 11 12 0f 10) aa(01 
    02) ac ae b2 b6 c6 c8 c9 d6(01 04 05) dc(00 
    02 03 05 ) df fd)mccs_ver(2.1)mswhql(1))

DDC/CI communication speed
  Address switching................... n/a
  Capabilities acquisition............ n/a
  VCP table update.................... 2265 ms.

Mandatory tests for MCCS Version 2 compliance
  Null message response............... n/a
  Capabilities string................. Confirmed Ok
    prot() field...................... Supported
    type() field...................... Supported
    mode() field...................... Not supported
    cmds() field...................... Supported
    vcp() field....................... Supported
    mccs_ver() field.................. Supported
  VCP version......................... Verified
  Display controller ID............... Verified
  New control value................... Supported, but ineffective
  Timing report (recommended)......... Supported

Preset and auto-setup function tests
  Restore factory defaults............ Verified
  Restore luminance/contrast defaults. Untested
  Restore color defaults.............. Untested

Enumerated control codes
  Non-continuous controls............. Unconfirmed
  Continuous controls................. Confirmed Ok
    0x02  Max=0x0002  Current=0x0001   RW  NC  New control value
    0x04  Max=0x00FF  Current=0x0001   WO  NC  Restore factory defaults
    0x05  Max=0x0001  Current=0x0000   WO  NC  Restore luminance/contrast defaults
    0x08  Max=0x00FF  Current=0x0000   WO  NC  Restore color defaults
    0x10  Max=0x0064  Current=0x004F   RW   C  Luminance
    0x12  Max=0x0064  Current=0x004B   RW   C  Contrast
    0x14  Max=0x000C  Current=0x0005   RW  NC  Select color preset {05 08 0B 0C}
    0x16  Max=0x0064  Current=0x0032   RW   C  Red video gain
    0x18  Max=0x0064  Current=0x002F   RW   C  Green video gain
    0x1A  Max=0x0064  Current=0x0032   RW   C  Blue video gain
    0x52  Max=0x00FF  Current=0x0000   RO  NC  Active control
    0x60  Max=0x000E  Current=0x0007   RW  NC  Input source {11 12 0F 10}
    0xAA  Max=0x00FF  Current=0x0001   RO  NC  Screen orientation {01 02}
    0xAC  Max=0x0003  Current=0x451C   RO   C  Horizontal frequency
    0xAE  Max=0x0000  Current=0x37CF   RO   C  Vertical frequency
    0xB2  Max=0x0008  Current=0x0001   RO  NC  Panel sub-pixel layout
    0xB6  Max=0x0005  Current=0x0003   RO  NC  Display technology type
    0xC6  Max=0xFFFF  Current=0x0050   RO  NC  Application enable key
    0xC8  Max=0x0000  Current=0x5605   RO  NC  Display controller type
    0xC9  Max=0xFFFF  Current=0x0000   RO   C  Display firmware level
    0xD6  Max=0x00FF  Current=0x0001   RW  NC  Power mode {01 04 05}
    0xDC  Max=0x00FF  Current=0x0000   RW  NC  Display application {00 02 03 05}
    0xDF  Max=0x00FF  Current=0x0201   RO  NC  VCP version
    0xFD  Max=0xFFFF  Current=0x0074  TBD TBD  Manufacturer specific - 0xFD

VCP-codes from another app:

VCP Code | VCP Code Name | Read-Write | Current Value | Maximum Value | Possible Values -- | -- | -- | -- | -- | -- 02 | New Control Value | Read+Write | 1 | 2 |   04 | Restore Factory Defaults | Write Only |   | 255 |   05 | Restore Factory Luminance/ Contrast | Write Only |   | 1 |   08 | Restore Factory Color Defaults | Write Only |   | 255 |   10 | Brightness | Read+Write | 80 | 100 |   12 | Contrast | Read+Write | 75 | 100 |   14 | Select Color Preset | Read+Write | 5 | 12 | 5, 8, 11, 12 16 | Video Gain (Drive): Red | Read+Write | 47 | 100 |   18 | Video Gain (Drive): Green | Read+Write | 47 | 100 |   1A | Video Gain (Drive): Blue | Read+Write | 50 | 100 |   52 | Active Control | Read Only | 0 |   |   60 | Input Select | Read+Write | 7 | 14 | 0, 17, 18, 15, 16 AA | Screen Orientation | Read Only | 1 |   | 1, 2 AC | Horizontal Frequency | Read Only | 17692 |   |   AE | Vertical Frequency | Read Only | 14287 |   |   B2 | Flat Panel Sub-Pixel Layout | Read Only | 1 |   |   B6 | Display Technology Type | Read Only | 3 |   |   C6 | Application Enable Key | Read Only | 17868 |   |   C8 | Display Controller ID | Read+Write | 22021 | 0 |   C9 | Display Firmware Level | Read Only | 0 |   |   D6 | Power Mode | Read+Write | 1 | 255 | 1, 4, 5 DC | Display Application | Read+Write | 0 | 255 | 0, 2, 3, 5 DF | VCP Version | Read Only | 513 |   |   FD | Manufacturer Specific |   | 116 | 65535 |  
supermar1010 commented 1 year ago

I also came here after reading the other pieces of information available on the internet and bricking my osd.

Someone wrote that it might be an issue with the inputs:

What I noticed is that the VCP code for the input is currently 7 (listed as "S-Video1" , which is obviously wrong), but the possible value are 15, 16, 17 and 18. So I tried to connect my PC to other ports and the value changed to 5, 6 and 8. So there is a sort of offset of 10 from the actual values that it should take. 

Maybe that's a point from where one could start investigating. Maybe there's some way to reset those values to something sane?

supermar1010 commented 1 year ago

I just tried setting all the values from 0x0 to 0xff, nothing changes the monitor always stays at 0x07.

leag commented 1 year ago

XMI3446 monitor has the same issue

RichardFevrier commented 11 months ago

Same monitor, same problems, to fix them I have to unplug it sometimes and do an hard reset when the OSD is willing to appear.

supermar1010 commented 11 months ago

@RichardFevrier can you describe your procedure? I'd really like to have a fully working monitor again :)

How do you do the hard reset?

RichardFevrier commented 11 months ago

Probably not what you want to hear @supermar1010 but I ended up by uninstalling ddcutil. Then unpluged the power cord and after that the OSD was finally back.

supermar1010 commented 11 months ago

Well if it brings my osd back, that's absolutely fine, will tra that soon, j hope I have success, having no osd really sucks. I kinda accepted the monitor as half bricked tbh

supermar1010 commented 10 months ago

Hmm that did not work unfortunately, still got the same problem. Uninstalled all ddc stuff, rebooted computer and monitor, when pressing any of the buttons the monitor just blacks out for a few seconds, but no osd

RichardFevrier commented 10 months ago

When you say rebooted monitor, have you unplugged the power cord? This was the trick for me

supermar1010 commented 10 months ago

Yes I unplugged for some time. But it did not help unfortunately

RichardFevrier commented 10 months ago

Sorry to hear that.

brlin-tw commented 1 month ago

Was trying to play with ddcutil until noticing the ddcutil detect warning text, thanks to everyone who has helped on this issue.

madjoe1976 commented 3 days ago

any update on this. i still have no OSD

brlin-tw commented 3 days ago

any update on this. i still have no OSD

I believe the one should have any update would be XiaoMi, which shipped the buggy display firmware.

RichardFevrier commented 3 days ago

Unfortunately that will probably never happen.

brlin-tw commented 3 days ago

@RichardFevrier

Unfortunately that will probably never happen.

That's also true, let's vote with our wallet when the next purchase comes.

brlin-tw commented 3 days ago

Also, you may want to file a complaint via XiaoMi's official support channels and spread the issue so that everyone will know they are selling crappy displays.