draft: Imprimante Ricoh SP C252DN
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Imprimante Ricoh SP C252DN",
|
||||
"_updated_at": "2026-05-16 13:14:32"
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
# Imprimante Ricoh SP C252DN
|
||||
|
||||
Cet article couvre deux opérations sur la Ricoh SP C252DN sous Linux : l'installation du fichier PPD pour exploiter toutes les fonctionnalités de l'imprimante, et la reprogrammation des puces de toner pour réinitialiser les niveaux d'encre.
|
||||
|
||||
## Installation du fichier PPD sous Linux
|
||||
|
||||
Un fichier PPD (PostScript Printer Description) décrit les capacités d'une imprimante : résolutions disponibles, options de finition, polices intégrées, etc. Les systèmes Linux s'appuient sur ce descripteur pour exposer les options d'impression avancées au système et aux applications.
|
||||
|
||||
### 1. Ajouter l'imprimante via JetDirect
|
||||
|
||||
Lors de l'ajout de l'imprimante, sélectionner le protocole **JetDirect**.
|
||||
|
||||

|
||||
|
||||
### 2. Choisir un pilote générique temporaire
|
||||
|
||||
Choisir `Generic` > `Generic PDF Printer`. Ce pilote servira de base avant l'installation du PPD spécifique.
|
||||
|
||||

|
||||
|
||||
### 3. Télécharger le PPD Ricoh
|
||||
|
||||
Télécharger le fichier **PPD** depuis le dépôt suivant :
|
||||
[https://git.abonnel.fr/cedricAbonnel/richo_c250dn_c252dn/src/branch/main/ppd](https://git.abonnel.fr/cedricAbonnel/richo_c250dn_c252dn/src/branch/main/ppd)
|
||||
|
||||
### 4. Installer le PPD
|
||||
|
||||
Dans la liste des imprimantes, ouvrir l'imprimante nouvellement ajoutée, cliquer sur l'icône `Paramètres` () puis sur `Informations sur l'imprimante`.
|
||||
|
||||

|
||||
|
||||
Cliquer sur `Installer le fichier PPD`, sélectionner le fichier téléchargé, ajuster le nom et l'emplacement si besoin.
|
||||
|
||||

|
||||
|
||||
Fermer la fenêtre avec la croix.
|
||||
|
||||

|
||||
|
||||
### 5. Vérifier les options d'impression
|
||||
|
||||
L'imprimante apparaît désormais avec ses options avancées dans la boîte de dialogue d'impression de n'importe quelle application.
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
## Reprogrammation de la puce de toner
|
||||
|
||||
Les cartouches de toner Ricoh Aficio SP C250SF / SP C250DN / C250e / C252DN intègrent une puce EEPROM qui signale les niveaux d'encre au firmware. Reprogrammer cette puce permet de réinitialiser ces niveaux après un rechargement physique du toner.
|
||||
|
||||
### Matériel et port de communication
|
||||
|
||||
L'opération se fait via un Arduino communiquant en I²C avec la puce. Les images ci-dessous montrent le port de communication de la cartouche et le câblage à réaliser.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Code Arduino
|
||||
|
||||
Adapter la valeur de `EEPROM_I2C_ADDRESS` selon la couleur de la puce à reprogrammer :
|
||||
|
||||
- `83` — noir (K)
|
||||
- `82` — cyan (C)
|
||||
- `81` — magenta (M)
|
||||
- `80` — jaune (Y)
|
||||
|
||||
```cpp
|
||||
// This code updates Ricoh toner chips for Ricoh Aficio SP C250SF, SP C250DN, C250e, etc.
|
||||
// Update EEPROM_I2C_ADDRESS to the chip you want to reprogram:
|
||||
// 83 = K (black), 82 = C (cyan), 81 = M (magenta), 80 = Y (yellow)
|
||||
|
||||
#define EEPROM_I2C_ADDRESS 83
|
||||
#include <Wire.h>
|
||||
|
||||
// Blank data for K, C, M and Y chips (128 bytes each), dumped from replacement chips.
|
||||
byte KChipData[]={168,0,1,3,18,1,1,255,100,0,52,48,55,53,52,51,20,9,65,66,22,0,22,38,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,100,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0};
|
||||
byte CChipData[]={168,0,1,3,14,2,1,255,100,0,49,49,49,53,52,54,20,2,65,66,23,0,7,1,255,255,255,255,255,255,255,255,88,48,56,54,80,52,48,49,50,48,56,0,68,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,1,85,0,18,0,40,0,5,184,230,50,0,128,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0};
|
||||
byte MChipData[]={168,0,1,3,14,3,1,255,100,0,49,49,49,53,52,54,20,2,65,66,24,0,7,16,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,100,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0};
|
||||
byte YChipData[]={168,0,1,3,14,4,1,255,100,0,49,49,49,53,52,55,20,2,65,66,25,0,3,7,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,100,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0};
|
||||
|
||||
void setup() {
|
||||
// Select the correct data array based on the chip address.
|
||||
byte WriteData[128];
|
||||
switch (EEPROM_I2C_ADDRESS) {
|
||||
case 83: memcpy(WriteData, KChipData, 128 * sizeof(byte)); break;
|
||||
case 82: memcpy(WriteData, CChipData, 128 * sizeof(byte)); break;
|
||||
case 81: memcpy(WriteData, MChipData, 128 * sizeof(byte)); break;
|
||||
case 80: memcpy(WriteData, YChipData, 128 * sizeof(byte)); break;
|
||||
default: memcpy(WriteData, KChipData, 128 * sizeof(byte)); break; // Fallback to K.
|
||||
}
|
||||
|
||||
// Initialise I2C and serial buses.
|
||||
Wire.begin();
|
||||
Serial.begin(9600);
|
||||
delay(100);
|
||||
|
||||
Serial.println("Start");
|
||||
Serial.println(" ");
|
||||
|
||||
// Write 128 bytes to the chip.
|
||||
Serial.println("Write 128 bytes:");
|
||||
byte wordaddress;
|
||||
for (byte i = 0; i < 128; i++) {
|
||||
wordaddress = i;
|
||||
i2cwrite((byte)wordaddress, (byte)WriteData[i]);
|
||||
Serial.print(wordaddress);
|
||||
Serial.print(":");
|
||||
Serial.print(WriteData[i]);
|
||||
Serial.print(" ");
|
||||
}
|
||||
|
||||
// Read back the 128 bytes to verify.
|
||||
Serial.println(" ");
|
||||
Serial.println("Read 128 bytes:");
|
||||
for (byte i = 0; i < 128; i++) {
|
||||
byte readVale = i2cread(i);
|
||||
Serial.print(i);
|
||||
Serial.print(":");
|
||||
Serial.print(readVale);
|
||||
Serial.print(" ");
|
||||
}
|
||||
Serial.println(" ");
|
||||
Serial.println("End");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
}
|
||||
|
||||
void i2cwrite(byte address, byte data) {
|
||||
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
|
||||
Wire.write((byte)address);
|
||||
Wire.write((byte)data);
|
||||
Wire.endTransmission();
|
||||
delay(20);
|
||||
}
|
||||
|
||||
byte i2cread(byte address) {
|
||||
byte rData = 0;
|
||||
Wire.beginTransmission(EEPROM_I2C_ADDRESS);
|
||||
Wire.write((byte)address);
|
||||
Wire.endTransmission();
|
||||
|
||||
Wire.requestFrom(EEPROM_I2C_ADDRESS, 1);
|
||||
while (Wire.available()) {
|
||||
rData = Wire.read();
|
||||
return rData;
|
||||
}
|
||||
}
|
||||
|
||||
// Utility: scan the I2C bus to identify the address of a connected chip.
|
||||
void WhatI2CAddress() {
|
||||
for (int i = 0; i < 128; i++) {
|
||||
Wire.requestFrom(i, 1);
|
||||
Serial.print(i);
|
||||
Serial.print(":");
|
||||
while (Wire.available()) {
|
||||
byte c = Wire.read();
|
||||
Serial.print(c); // If data exists, print it — that's the chip address.
|
||||
}
|
||||
Serial.println(" ");
|
||||
delay(5);
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user