6800H 款,不赖厂商不搞营销,骂一顿售后/厂商也解决不了问题

以下问题基本上是 AMD、Windows 和小米合作造成的

安装 Windows 10

Ventoy 一把梭即可,可能是由于 BIOS 设置(小米没有开放很多设置),(使用最新版本安装镜像)有几率无法进入安装界面,卡黑屏(加载安装镜像阶段,不出现 loading 的转圈图标)

我在重复了不到 5 次【关机 - 进 BIOS - Ventoy - 选择 Win 10 镜像】后成功进入了安装界面

我的 Ventoy 设置:使用 GPT 分区,支持安全启动

另外需要注意的是,(MSDN 下载的)Windows 10/11 安装镜像都没有出厂瑞昱/AX210的网卡驱动,如果重装 Windows 11 会因没有网络链接而无法激活,Windows 10 则可以先进系统然后装驱动

开机后无法上网

开机后可以自动连上 Wifi,但是无法上网,网络图标显示无网络,无论是出厂自带的瑞昱网卡还是更换的 AX210 都有此现象

另:更换 AX210 确实可以解决瑞昱断流问题,原厂瑞昱的断流频率不高,只在测试游戏时断过一次,当时可以感觉到明显的网络延迟

尝试过使用最新版/旧版/小米官方提供的网卡驱动,都没有效果,最后发现是因为无法连接 Windows 的网络连通性检测网址 http://msftconnecttest.com

通过修改注册表解决,注册表打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet 

此时可以选择编辑 EnableActiveProbing,将值更改为 0 来关闭连通性检测

也可以将连通性检测 URL 更改为 dns.msftncsi.com,再将路径更改为 ncsi.txt,如下图

很奇怪,同一网络下其他有线连接的电脑都没有此问题

花屏之后黑屏死机

最恶心人的问题

浏览器播放视频时有概率触发,黑屏时可以观察到电脑在运行,只是显示器黑屏

暂时可以确定是 AMD 驱动的问题,到 AMD 官网下载 6800H 的最新显卡驱动(本来想安装 Recommended 版本,但是居然不支持 : ),因此只能选择 Optional 版本),执行一次清洁安装

安装完毕后 AMD 会在开机时自动启动两个程序:AMD Crash Defender Service 和 AMD External Events Utility,实测禁用这两个程序后不会再黑屏死机(起码暂时没有再遇到过)

播放视频时仍有概率闪屏(不会花屏),但只是闪屏,没观察到有任何其他影响,可能是视频解码的问题

另外,我还关闭了浏览器的硬件加速

AMD 的驱动质量真的堪忧,另一台 6700xt 安装 Optional 驱动后没法玩 MOBA 游戏(准确地说是风暴英雄,但我也搜到了 DOTA 的 reddit 帖子),运行一段时间画面就会随机卡死,无法杀进程,必须重启,最后将驱动换到 Recommended 版本解决

播放/暂停每次都要拿遥控器,好麻烦,干脆通过脚本/程序远程暂停

环境

  • CoreELEC 19
    • Kodi 19.3

准备

  • 开启 Kodi 的 Web 界面,设置用户名和密码
    • CoreELEC 等下游系统也支持 Json-RPC
  • cURL
  • 任意支持发送 POST 请求的编程语言

关于 Kodi 的 Json-RPC

可以通过对 http://[Kodi IP]:[Web Port]/jsonrpc 发送 GET 请求来查看支持的操作,不过不全面,推荐根据 Kodi 版本在 https://kodi.wiki/view/JSON-RPC_API 查找对应版本的文档,Kodi 19 可以查看 v12 版:https://kodi.wiki/view/JSON-RPC_API/v12

cURL

这里只给出播放/暂停的指令,其他指令可以通过更改执行名称(method)和指令对应的参数(params)举一反三

curl -X POST --user [web interface usename]:[web interface password] -H 'Content-Type: application/json' -i http://[Kodi IP]:[Web Port]/jsonrpc --data '{"jsonrpc": "2.0", "method": "Player.PlayPause", "params": { "playerid": 0 }, "id": 1}'

C#

以 C# 为例,实现远程控制 Kodi 播放/暂停的小程序,使用 .NET 7,参考了 https://github.com/steve600/KodiJsonRpcSample

首先创建一个 JsonRpcRequest 类

using System.Text.Json.Serialization;

namespace KodiRemoteTest {
    public class JsonRpcRequest {
        [JsonPropertyName("jsonrpc")]
        [JsonRequired]
        public string JsonRPC { get; set; } = "2.0";

        [JsonPropertyName("id")]
        [JsonRequired]
        public int Id { get; set; }

        [JsonPropertyName("method")]
        [JsonRequired]
        public string Method { get; set; }

        [JsonPropertyName("params")]
        public object Params { get; set; }
    }
}

然后创建 JsonRpcRequest 类的实例,修改 Method 字段和 Params 字段来满足不同指令的需求

using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

namespace KodiRemoteTest {
    internal class Program {
        internal static string KodiUrl = "http://[IP]:[port]/jsonrpc";
        internal static string Username = "username";
        internal static string Passowrd = "passowrd";
        static async Task Main() {
            var kodiRequest = new JsonRpcRequest() {
                Id = 1,
                Method = "Player.PlayPause",
                Params = new {
                    playerid = 0
                }
            };

            var httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(5) };
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes($"{Username}:{Passowrd}")));

            Console.WriteLine(JsonSerializer.Serialize(kodiRequest));

            var response = await httpClient.PostAsync(requestUri: KodiUrl, content: new StringContent(JsonSerializer.Serialize(kodiRequest), encoding: Encoding.UTF8, mediaType: "application/json"));

            Console.WriteLine(response.StatusCode);
            Console.WriteLine(await response.Content.ReadAsStringAsync());
        }
    }
}

调用前最好先通过 Player.GetActivePlayers 确认一下正在播放的播放器 ID(playerid)

无论哪种方式都不要忘记使用用户名和密码完成 HTTP 基本身份认证,否则会出现

{"error":{"code":-32099,"message":"Bad client permission."},"id":1,"jsonrpc":"2.0"}

这样的错误信息