跳到主要内容

ACR1252U — USB NFC Reader III(NFC Forum Certified)完整说明

一句话定位:ACR1252U 是 ACS 第二代 NFC 读卡器家族中最受欢迎的成员,主打 NFC Forum 认证 + 内置 SAM(Secure Access Module)安全插槽。它能做 NFC 的 Reader/Writer、Card Emulation、Peer-to-Peer 三种模式,适合要上正式产品、需要密钥分散与双向认证的开发者。

如果你在 ACR122U 与 ACR1252U 之间犹豫:ACR122U 是「便宜好玩的入门」,ACR1252U 是「要上线、要安全、要 NFC Forum 兼容标章」的专业选择。

开箱与外观

  • 主体:98.0 × 65.0 × 12.8 mm,雾黑(Matte Black)塑料外壳,81 g。
  • 天线:内置 50 × 40 mm 天线,读距最远 50 mm。
  • 两个 USB 版本:USB Type-A(ACR1252U-M1)与 USB Type-C(ACR1252U-MF)——买之前确认你电脑的连接端口。
  • SAM 插槽:主体一个标准 SIM 尺寸插槽,用来插 SAM 卡。
  • 可编程 LED + 蜂鸣器:LED(红/绿)与蜂鸣器都可由软件控制。
  • 选配底座:可选购立架,让读卡器站立成最佳感应角度。

规格总览

项目规格
认证NFC Forum Certified、IEC/EN 62368、CE、UKCA、FCC、VCCI、TELEC、KC、BIS、RoHS、REACH、WEEE、Microsoft WHQL
支持标准/卡片ISO/IEC 18092 NFC、ISO 14443 Type A & B(T=CL)、MIFARE®、FeliCa
工作频率13.56 MHz
读写速度106 / 212 / 424 kbps(可编程)
NFC 模式Reader/Writer、Peer-to-Peer、Card Emulation(三种全支持)
SAM 插槽1 × ISO 7816 Class A(5 V)/ SIM 尺寸/T=0、T=1,9.6–215 kbps
防碰撞内置
扩展 APDU✅(最大 64 KB)
USB 接口USB CCID,USB 2.0 Full Speed(12 Mbps),兼容 USB 3.0
供电5 VDC,最大 200 mA
Firmware 升级✅(透过 USB)
尺寸/重量98.0 × 65.0 × 12.8 mm / 81 g
USB Vendor/Product ID072F:223B
系统支持Windows、Linux、macOS、Android
官方文档ACR1252U 产品页技术规格 (PDF)

重点特色深入

SAM 安全插槽(这款的杀手级功能)

SAM = Secure Access Module。把一张 SAM 卡插进 slot 后,读卡器可以把密钥分散(Key Diversification)双向认证(Mutual Authentication)这些敏感运算「外包」给实体 SAM 卡执行,密钥永远不离开硬件。这对金融、门禁、交通等需要高安全等级的应用至关重要——就算主机被入侵,读卡器也拿不到真正的密钥。

三种 NFC 模式

  • Reader/Writer:最常用,读写 NFC 标签与卡片。
  • Card Emulation:让读卡器「扮演」一张感应卡,供其他读卡器/手机读取(例如会员卡模拟、数字门禁)。
  • Peer-to-Peer:与另一台支持 P2P 的 NFC 设备交换数据(例如与手机 Android Beam 对谈)。

安装与驱动(Linux)

libnfc 兼容性:这款很关键

与 ACR122U 不同,ACR1252U 没有 libnfc 的直连 driver。libnfc 社区明确表示 acr122_usb 只认 072F:2200(ACR122U)、072F:90CC(Touchatag)、072F:2214(ACR1222),不包括 072F:223B(ACR1252U)。 因此要用 libnfc 的话,只能透过 libnfc 的 PC/SC driverpcsc wrapper),也就是一定要先启动 pcscd,libnfc 再去「经过 PC/SC」存取。这代表 mfoc/mfcuk 这类依赖 libnfc 直连的工具对 ACR1252U 支持不佳。 务实建议:这款就用标准 PC/SC(pcsc_scan + pyscard),这才是它的主场。

Step 1:安装并启动 PC/SC(Debian/Ubuntu)

sudo apt update
sudo apt install -y pcscd pcsc-tools libpcsclite-dev
sudo systemctl enable --now pcscd

Step 2:插入读卡器并扫描

pcsc_scan

预期输出:

Scanning present readers...
0: ACS ACR1252U 0

放上卡片,预期看到:

Reader 0: ACS ACR1252U 0
Card state: Card inserted,
ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A

Step 3:确认 USB 设备名(可选)

lsusb

预期:

Bus 001 Device 008: ID 072f:223b Advanced Card Systems, Ltd

确认 072f:223b 就是它。

macOS 安装

macOS 内置 PC/SCpcscd 以 launchd 服务存在),ACR1252U 是 CCID 读卡器,插上就能被系统识别,不需额外驱动。

Step 1:列读卡器

pcsc_scan

在 macOS 上会透过内置 PC/SC 列出 ACS ACR1252U 0

Step 2(可选):用 Python 测试

macOS 对 Python 的 PC/SC 绑定较常见的是 pyscard(它底层走系统 PC/SC):

python3 -m pip install pyscard
python3 - <<'EOF'
from smartcard.System import readers
print(readers())
EOF

预期印出 ['ACS ACR1252U 0'](版本不同名称可能略异)。放上卡片再跑,就能开始读 UID / 发 APDU。

Web NFC、macOS 与浏览器:真相与解法

很多人误以为「买一台支持 Web NFC 的读卡器,浏览器就能直接读卡」。这里必须把真相讲清楚:

  1. Web NFC API(NDEFReader)只在 Chrome 的 Android 版可用。macOS 桌面 Chrome/Safari/Firefox 都不支持——这是 Web NFC 目前最主要、也最常被误解的限制。
  2. WebUSB 也行不通:ACR1252U 的 USB 接口是 Smart Card class(0x0B),而浏览器的 WebUSB 明确禁止存取受保护的 class(含 Smart Card)。所以 navigator.usb.requestDevice() 会回报 blocked。
  3. 正解 = PC/SC bridge:在 macOS/Windows/Linux 上,正确做法是让电脑上的 PC/SC 堆栈接管读卡器,再用一支本机桥接程序暴露 HTTP/WebSocket 给浏览器。这正是开源项目如 web-nfc-bridge(以 ACR1252U-M1 实测)采用的架构:
结论

在 macOS 上要「浏览器 + ACR1252U」,别找 Web NFC——架一支本机 PC/SC bridge 就对了。若你只想在手机浏览器读卡,手机本身的 NFC 天线 + Web NFC(Android Chrome)即可,与读卡器无关。

快速开始:pyscard 读 UID(跨平台)

pip install pyscard
from smartcard.System import readers

r = readers()
print("Readers:", r)
conn = r[0].createConnection()
conn.connect()
# GET UID
data, sw1, sw2 = conn.transmit([0xFF, 0xCA, 0x00, 0x00, 0x04])
print("UID:", data)
print(f"SW: {sw1:02X} {sw2:02X}")

预期 SW: 90 00(成功)。

兼容性

平台支持备注
Windows 10/11内置 Microsoft CCID/PC/SC 驱动,即插即用
Linux (Kali/Ubuntu)走 PC/SC(pcscd);无 libnfc 直连
macOS内置 PC/SC,免驱动
Android可透过 OTG + PC/SC 应用使用
浏览器⚠️Web NFC 只在 Android;桌面需 PC/SC bridge

故障排查

1. nfc-list 找不到 ACR1252U

  • 原因:libnfc 没有这款的直连 driver(072F:223B 不在表内)。
  • 解法:这款请改用 pcsc_scan / pyscard / opensc-tool,走标准 PC/SC。若真要 libnfc,确保 pcscd 有跑,且 libnfc 以 --with-drivers=pcsc 建置。

2. pcsc_scan 没东西

  • 原因pcscd 没启动。
  • 解法sudo systemctl start pcscd(Linux);macOS 检查 ps aux | grep pcscdsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.securityd...(通常内置已启用)。

3. 读 FeliCa/特定卡一直失败

  • 原因:卡片超出了该款的收发协议支持,或读距/角度问题。
  • 解法:确认卡片属 ISO 14443 A/B、MIFARE、FeliCa、ISO 18092;把卡平放于天线正中央;若要多协议(含 ISO 15693)请考虑 ACR1552U

4. SAM 插槽读不到

  • 原因:SAM 卡方向/尺寸(SIM 尺寸)、或 SAM 卡 Class 不符(需 Class A / 5 V)。
  • 解法:确认使用 ISO 7816 Class A SIM 尺寸 SAM 卡,插入方向正确。SAM 与主读卡器是两套独立通道,APDU 走不同节点。

相关资源