---
title: 读取 iButton 钥匙
slug: zero/zh/ibutton/read
description: 详细介绍如何使用 Flipper Zero 读取、保存、编辑和模拟钥匙，以及如何排查常见问题
image: https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/-lPc8QfZd-kDXkz7Oj_zL_readingibuttonkeysprev02-zh.png
docTags: 
createdAt: 2023-08-10T12:45:51.000Z
---

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/-o1vh6yKuBAYqtXuNGbKN_ibutton-captured-bubble-zh.png)

Flipper Zero 让你可以方便地读取、保存和模拟采用 Dallas、Cyfral 和 Metakom 协议的 iButton 门禁钥匙。此外，你还可以修改已保存钥匙的唯一标识符（UID）。

本页将详细介绍如何使用 Flipper Zero 读取、保存、编辑和模拟钥匙，以及如何排查常见问题。

:::Iframe{iframeHeight="0" code="<div class=&#x22;info flipper-callout&#x22;>&#xA;    <div class=&#x22;callout-header&#x22;></div>&#xA;    要详细了解 iButton 钥匙以及 Flipper Zero 的硬件实现，请参阅 <a href=&#x22;https://docs.flipper.net/zero/zh/ibutton&#x22; onclick=&#x22;next.router.push('https://docs.flipper.net/zero/zh/ibutton')&#x22;><u>iButton</u></a>。&#xA;</div>"}

:::

***

# 如何读取 iButton 钥匙

Flipper Zero 可以读取以下类型的 iButton 钥匙及其对应的数据：

- **Dallas DS1990：**&#x4EC5; UID（该钥匙没有存储器）
- **Dallas DS1992：**&#x55;ID 和存储器中的数据
- **Dallas DS1996：**&#x55;ID 和存储器中的数据
- **Dallas DS1971：**&#x55;ID 和存储器中的数据
- **Dallas 系列不受支持的钥匙：**&#x4EC5; UID
- **Metakom：**&#x4EC5; UID（该钥匙没有存储器）
- **Cyfral：**&#x4EC5; UID（该钥匙没有存储器）



要使用 Flipper Zero 读取并保存 iButton 钥匙的数据，请执行以下操作：

::::WorkflowBlock
:::WorkflowBlockItem
转到 **Main Menu** **→ iButton → Read**。
:::

:::WorkflowBlockItem
按下图所示，把钥匙贴到**数据**引脚和**接地**引脚上。

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/ajGg4STr__-pLA2x4eZrc_ibutton-read-steps-1.jpg)
:::

:::WorkflowBlockItem
读取完成后，查看钥匙的数据。

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/8fPDlFB9SI9Qxt-e9exZ8_ibutton-read.jpg)
:::

:::WorkflowBlockItem
要保存钥匙，请转到 **More** **→** **Save**。
:::

:::WorkflowBlockItem
为钥匙命名，然后按 **Save**。
:::
::::

保存钥匙后，你可以模拟、重命名、删除、编辑它，也可以把它写入空白钥匙或同类型的钥匙。

## 读取失败时

- iButton 钥匙可能没有正确接触到引脚。→ 请按上图所示连接钥匙。
- iButton 钥匙可能使用了不受支持的协议。
- iButton 钥匙可能已损坏。
- 读取 Dallas 钥匙时出现了 **CRC error**。→ 请重新读取该钥匙并尝试模拟。如果模拟不成功，该错误就无法修复。要了解更多信息，请参阅下方的 [CRC 读取错误](https://docs.flipper.net/zero/zh/ibutton/read#crc)章节。

***

# 编辑已保存的 iButton 钥匙

你可以按以下步骤编辑已保存钥匙的 UID：

::::WorkflowBlock
:::WorkflowBlockItem
转到 **Main Menu → iButton → Saved**。
:::

:::WorkflowBlockItem
选择你想编辑的钥匙，然后选择 **Edit**。
:::

:::WorkflowBlockItem
以十六进制输入所需的值。

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/sfGsfAUW-hdPi8qWYUr5__monosnap-miro-2023-08-11-19-36-54.jpg)
:::

:::WorkflowBlockItem
按 **Save**，然后输入钥匙的新名称并再次按 **Save**。
:::
::::

你也可以使用 [Add Manually](https://docs.flipper.net/zero/zh/ibutton/add-manually) 功能创建虚拟 iButton 钥匙。

***

# 模拟已保存的 iButton 钥匙

当 Flipper Zero 上已经保存了钥匙时，你可以按以下步骤模拟它：

:::::WorkflowBlock
:::WorkflowBlockItem
转到 **Main Menu** **→ iButton → Saved**。
:::

:::WorkflowBlockItem
选择你想模拟的钥匙。
:::

::::WorkflowBlockItem
把 Flipper Zero 贴到 iButton 读头上，并按下图所示确保**数据**引脚和**接地**引脚与其接触。

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/8dpxDp4-M3MnP41ORKbf7_ibutton-read-steps.jpg)

:::Iframe{iframeHeight="0" code="<div class=&#x22;info flipper-callout&#x22;>&#xA;    <div class=&#x22;callout-header&#x22;></div>&#xA;有时 iButton 读头的结构会影响与 Flipper Zero 引脚的接触，导致钥匙无法被读取。这种情况下，请完全按上图所示，把边缘引脚（数据）对准读头中心，把中间引脚（接地）对准读头边缘。</div>"}

:::
::::
:::::

## 模拟失败时

- Flipper Zero 的引脚可能没有正确接触到读头。→ 请按上图所示，把 Flipper Zero 的引脚连接到读头上。
- 中间引脚（接地）无法接触到读头边缘。→ 你可以借助导线来模拟 iButton 钥匙。把两根导线插入 Flipper Zero 的 GPIO 引脚，向读头传输数据：
  - GPIO 引脚 17（数据）
  - GPIO 引脚 8、11 或 18（接地）

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/cUtjL0T1QY5rECLhLHKRX_ibutton-emulation-wiring.jpg "你也可以借助导线来模拟 iButton 钥匙。 ")

- 该读头具备防模拟保护。→ Flipper Zero 无法绕过。
- 如果你是手动添加或编辑了这把钥匙，可能输入了错误的钥匙 UID。

***

# CRC 读取错误

Dallas 钥匙的 UID 结构共 8 个字节，其中包括家族码字节和循环冗余校验（CRC）字节。CRC 字节通过检测数据传输或存储过程中可能出现的错误，帮助确保数据完整性。

::Image[]{src="https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/US0-cOxrnRdtJHuTv9xKd_dallas-uid.jpg" size="82" width="3480" height="1149" position="center" caption="Dallas 钥匙的 UID 包含家族码、CRC 和序列号" alt="Dallas 钥匙的 UID 包含家族码、CRC 和序列号。" showCaption="true" darkWidth="3480" darkHeight="1149"}

每次读取 iButton 钥匙时，Flipper Zero 都会重新计算 CRC 字节来校验其是否正确。如果捕获到的 CRC 字节与计算结果不一致，就会出现 CRC 错误，说明 UID 已损坏。&#x20;

![](https://api.archbee.com/api/optimize/3StCFqarJkJQZV-7N79yY/Pwyz4xz5xkdY5CB5jdlN5_crc-error.jpg "Flipper Zero 会显示预期的正确 CRC 字节")

