ML-2161打印机硒鼓计数芯片简单破解

关于硒鼓

一般情况下激光打印机碳粉用完后更换硒鼓便可以继续使用。但是硒鼓很贵。而且用完碳粉的硒鼓仅仅是碳粉盒中碳粉比较少,其他组件是完好的。所以,相比更换整个硒鼓这一“奢侈”的做法,直接给碳粉盒加碳粉更加实惠。

但是,如果给用完了的硒鼓直接加碳粉的话,将硒鼓放回打印机后显示的碳粉量并没有变化,因此还是用不了。

这就要提到打印机碳粉量是如何被获取的了。

实际上打印机并不知道碳粉盒里的碳粉具体有多少,但生产商可以估计一盒碳粉可以打印多少次。万恶的生产商会在硒鼓上装一个计数芯片用来记录打印次数(或许还有其他信息),然后当打印次数达到生产商设置的打印次数后,就可以认为碳粉用完,显示的碳粉量就会是百分之零,这个硒鼓就没法用了。

所以给用完了的硒鼓加粉后需要更换计数芯片,当然更节约的做法是重置计数芯片。

 

背景

家里有一台三星ML-2161打印机。碳粉要见底了。

为了给加碳粉做准备,我查了一下如何重置ML-2161硒鼓的计数芯片。找到了这个帖子《三星ML-2161 计数芯片清零方法》。

这个方法提到将24C04闪存芯片的0x00到0x23偏移36个字节填充为0就重置成功了。

但这个帖子中的做法我没办法完成。我不知道怎么用烙铁焊芯片或取芯片。虽然我有热风枪,但取下和装回芯片也是很麻烦的。因为很容易把其他贴片元件吹跑。更重要的是我没有编程器,所以没办法刷写芯片。。。

不过,根据它和其他I2C电路板相同颜色的红色电路板,我猜测这是一个I2C总线电路,而我的树莓派有I2C通讯功能,或许可以用树莓派读写计数器上的闪存芯片。一番查找过后,看到百度百科《硒鼓计数器芯片恢复程序》写到,许多打印机计数器都是I2C总线。于是我大胆的尝试使用树莓派的I2C模块读取这个计数器。

 

启用I2C

树莓派的I2C功能默认是关闭的。你需要在/boot/config.txt中启用I2C模块

dtparam=i2c_arm=on

一般config.txt文件中有这么一条注释,去了井号就可以了。

重启树莓派。开机后,并不能马上使用I2C,你需要加载i2c-dev模块

sudo modprobe i2c-dev

然后你需要一个工具方便地对I2C设备进行读写操作。
sudo apt-get install i2c-tools

现在可以使用i2cdetect命令查找I2C设备了。
sudo i2cdetect -y -a 1

由于没有连接任何I2C设备,你应该会得到这样的输出。

 

关于ML-2161打印机硒鼓计数器触点

计数器被嵌在硒鼓侧面的盖子上。将盖子撬下来,稍微用力推出小小的电路板。最好用废纸垫着操作,因为有碳粉会弄的很脏。

 

电路板上四个触点没有标记,但可以基于这是一个I2C电路的假设再次进行一次猜测。。。左边第一个最长,硒鼓推进打印机时最先接触这个触点,所以猜测它是GND(负极);中间两个触点相同,感觉是SDA(数据总线)和SCL(时钟总线);最右边的估计是VCC(正极)了。

按照猜测将这些触点接到树莓派上,没有识别到设备。然后将接SCL和SDA的两条线交换了一下,居然成功了。。。。。。

就这样,这确实是一个I2C设备,且四个触点也确定下来了。上图从左至右分别为GND、SCL、SDA、VCC。

 

连接I2C设备

树莓派有40个引脚,各引脚功能如下。

第三和第五引脚分别是SDA和SCL,然后可以选3.3V的第一引脚作为VCC,第九引脚为GND。像这样与计数器电路板触点对应接好。

再次使用i2cdetect 命令后,出现了两个地址。

把这两个地址的数据dump出来。

i2cdump -y 1 0x50
i2cdump -y 1 0x51

一共512字节,和《三星ML-2161 计数芯片清零方法》给出的截图类似的HEX数据。

成功读取了闪存芯片数据!

 

重置

计数芯片的数据已经完全暴露出来。之后只要按照帖子里给的做法,将前36个字节清零就重置成功了。

使用i2cset 命令可以设置单个字节的值

sudo i2cset -y 1 0x50 0x00 0x00

当然,可以用Shell的for循环完成这36个字节的清零
for((i=0;i<36;i++)); do i2cset -y 1 0x50 $i 0x00; done

大功告成。

将计数芯片及盖子装回硒鼓,将硒鼓推进打印机。看了一下碳粉量。

成功了变成了百分百!

 

不过碳粉还没加,用不了百分之几估计就没粉了。