marietto Im not sure that it is only a netbsd issue,because I'm using a firmware that comes from intel called i915/kbl_dmc_ver1_04.bin. the problem could be inside this file. Do u agree ?
We're not seeing any firmware-related errors...
marietto Anyway,give me the Github page where you think that I should report the problem.
Just add it to your existing issue there.
Anyway, we can see if your monitor is returning proper EDID data. SSH into your machine, then compile and run (as root) the program below, then email the binary output file to me (same username as here) lumaca SDF punto ORG_anizzazione_
If the program says that it cannot open /dev/ttyE0
, then retry it on genfb
(ie. just disable both Intel and Nouveau DRM drivers in /boot.cfg
)
Note: the program doesn't work on genfb
cc -o wsedid wsedid.c # compile
./wsedid > /tmp/hdmi_edid.bin # run
/dev/ttyE0 EDID data_size = 128 # printed by program
/**
* wsedid.c: Print EDID info. using wsdisplay(4) on NetBSD/OpenBSD.
*/
#include <dev/wscons/wsconsio.h>
#include <sys/ioctl.h>
#include <sys/utsname.h>
#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char* argv[])
{
struct utsname un;
struct wsdisplayio_edid_info ei;
char ebuf[4096];
char* dev, *os;
int fd, rc = EXIT_FAILURE;
if ((uname(&un)) < 0)
err(rc, "uname failed");
os = un.sysname;
if (argc == 2)
dev = argv[1];
else {
if (strcmp(os, "NetBSD") == 0)
dev = "/dev/ttyE0";
else if (strcmp(os, "OpenBSD") == 0)
dev = "/dev/ttyC0";
else
errx(rc, "%s: OS is not supported", os);
}
ei.edid_data = ebuf;
ei.buffer_size = sizeof ebuf;
if ((fd = open(dev, O_RDONLY)) < 0)
err(rc, "%s: open failed", dev);
if (ioctl(fd, WSDISPLAYIO_GET_EDID, &ei) < 0)
err(rc, "ioctl(WSDISPLAYIO_GET_EDID) failed");
fprintf(stderr, "%s EDID data_size = %u\n", dev, ei.data_size);
fwrite(ebuf, 1, ei.data_size, stdout);
rc = EXIT_SUCCESS;
return rc;
}