diff --git a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/draft_overlay.json b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/draft_overlay.json deleted file mode 100644 index a0afc2f..0000000 --- a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/draft_overlay.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "title": "Imprimante Ricoh SP C252DN", - "_updated_at": "2026-05-16 13:15:02", - "slug": "imprimante-ricoh-sp-c252sf-ps", - "published": true, - "published_at": "2025-01-14 07:42", - "category": "Informatique", - "tags": { - "tags": [ - "Imprimante Ricoh", - "Linux" - ] - }, - "seo_title": "", - "seo_description": "", - "og_image": "https://www.abonnel.fr/file?uuid=f99ab6c7-db3a-4eea-be14-593a7eb183ba&name=cover.png" -} diff --git a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/draft_overlay.md b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/draft_overlay.md deleted file mode 100644 index d264e6e..0000000 --- a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/draft_overlay.md +++ /dev/null @@ -1,169 +0,0 @@ -# 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**. - -![Sélection du protocole JetDirect](20230313-201028.png) - -### 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. - -![Choix du pilote Generic PDF Printer](20230313-201303.png) - -### 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` (![roue crantée](20230313-202024.png)) puis sur `Informations sur l'imprimante`. - -![Informations sur l'imprimante](20230313-201543.png) - -Cliquer sur `Installer le fichier PPD`, sélectionner le fichier téléchargé, ajuster le nom et l'emplacement si besoin. - -![Installation du PPD](20230313-201400.png) - -Fermer la fenêtre avec la croix. - -![Fenêtre de confirmation](20230313-201855.png) - -### 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. - -![Options d'impression disponibles](20230313-201923.png) -![Aperçu des options détaillées](20230313-201933.png) - ---- - -## 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. - -![Port de communication de la puce](20230919-225855.png) -![Vue détaillée du connecteur](20230919-225945.png) -![Câblage Arduino — vue 1](20230919-230131.png) -![Câblage Arduino — vue 2](20230919-230139.png) -![Montage final](20230919-230155.png) - -### 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 - -// 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); - } -} -``` \ No newline at end of file diff --git a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/index.md b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/index.md index c07ac9d..d264e6e 100644 --- a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/index.md +++ b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/index.md @@ -1,89 +1,100 @@ # Imprimante Ricoh SP C252DN -![Nom de la section](dummy.png) +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. -Un fichier PPD est un descripteur qui contient des informations sur les fonctionnalités de l'imprimante, telles que les résolutions d'impression disponibles, les options de finition et les polices de caractères disponibles. Les systèmes d'exploitation, y compris Linux, utilisent les informations contenues dans le PPD pour configurer l'imprimante et fournir des options d'impression avancées. +## Installation du fichier PPD sous Linux -Pour utiliser un PPD sous Linux, vous devez tout d'abord installer le pilote d'imprimante correspondant à votre imprimante. +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. -Pour l'imprimante **Ricoh SP C252DN** sélectionner le protocole JetDirect. +### 1. Ajouter l'imprimante via JetDirect -![](20230313-201028.png) +Lors de l'ajout de l'imprimante, sélectionner le protocole **JetDirect**. -Choisir le pilote `Generic` > `Generic PDF Printer` +![Sélection du protocole JetDirect](20230313-201028.png) -![](20230313-201303.png) +### 2. Choisir un pilote générique temporaire -Sur le site https:*git.abonnel.fr/cedricAbonnel/richo_c250dn_c252dn/src/branch/main/ppd télécharger le fichier **PPD file**. +Choisir `Generic` > `Generic PDF Printer`. Ce pilote servira de base avant l'installation du PPD spécifique. -Dans la liste des imprimantes, sélectionner le symbole `Paramètre` (![roue crantée](20230313-202024.png)) puis sélectionner `Informations sur l'imprimante` : +![Choix du pilote Generic PDF Printer](20230313-201303.png) -![](20230313-201543.png) +### 3. Télécharger le PPD Ricoh -Cliquer sur le bouton `Installer le fichier PPD`. Choisir le fichier fraîchement téléchargé. Changer le nom, renseigner l'emplacement. +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) -![](20230313-201400.png) +### 4. Installer le PPD -Fermer avec la croix. +Dans la liste des imprimantes, ouvrir l'imprimante nouvellement ajoutée, cliquer sur l'icône `Paramètres` (![roue crantée](20230313-202024.png)) puis sur `Informations sur l'imprimante`. -![](20230313-201855.png) +![Informations sur l'imprimante](20230313-201543.png) -Une fois le pilote installé, vous pouvez sélectionner l'imprimante dans les options d'impression de votre application, puis sélectionner les options d'impression disponibles. +Cliquer sur `Installer le fichier PPD`, sélectionner le fichier téléchargé, ajuster le nom et l'emplacement si besoin. -![](20230313-201923.png) ![](20230313-201933.png) +![Installation du PPD](20230313-201400.png) -En résumé, si vous disposez d'un pilote d'imprimante Linux compatible avec votre imprimante qui inclut le PPD approprié, vous pouvez utiliser le PPD pour configurer votre imprimante et profiter de toutes les fonctionnalités avancées qu'elle offre. +Fermer la fenêtre avec la croix. -# Reprogrammation de la puce de toner -Port de communication +![Fenêtre de confirmation](20230313-201855.png) -![](20230919-225855.png) +### 5. Vérifier les options d'impression -![](20230919-225945.png) +L'imprimante apparaît désormais avec ses options avancées dans la boîte de dialogue d'impression de n'importe quelle application. -![](20230919-230131.png)![](20230919-230139.png) +![Options d'impression disponibles](20230313-201923.png) +![Aperçu des options détaillées](20230313-201933.png) -![](20230919-230155.png) +--- -``` -* This code updates Ricoh Toner chip for Ricoh Aficio SP C250SF, SP C250DN, C250e, etc... -* Update EEPROM_I2C_ADDRESS define value with the chip you want to reprogram -* 83 is Chip K - black -* 82 is Chip C - cyan -* 81 is Chip M - magenta -* 80 is Chip Y - yellow +## 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. + +![Port de communication de la puce](20230919-225855.png) +![Vue détaillée du connecteur](20230919-225945.png) +![Câblage Arduino — vue 1](20230919-230131.png) +![Câblage Arduino — vue 2](20230919-230139.png) +![Montage final](20230919-230155.png) + +### 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 -* blank data for K, C, M & Y chip. 128 array of data. I got it from data dump of a replacement chip. +// 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 correct data for chip then copy to WriteData array + // 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: *default K chip data, no reason. - memcpy(WriteData,KChipData,128*sizeof(byte)); - break; + 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. } - -- Start Wire and Serial bus + + // Initialise I2C and serial buses. Wire.begin(); Serial.begin(9600); delay(100); @@ -91,36 +102,33 @@ void setup() { Serial.println("Start"); Serial.println(" "); -- Start Write Chip with blank data + // Write 128 bytes to the chip. Serial.println("Write 128 bytes:"); byte wordaddress; - - for(byte i=0;i<128;i++){ - wordaddress = i; - i2cwrite[^note: byte)wordaddress,(byte)WriteData[i]); - Serial.print(wordaddress); - Serial.print(":"); - Serial.print(WriteData[i]); - Serial.print(" "); + 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(" "); } -- Start Read chip + // 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(" "); + 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) { @@ -137,24 +145,25 @@ byte i2cread(byte address) { Wire.write((byte)address); Wire.endTransmission(); - Wire.requestFrom(EEPROM_I2C_ADDRESS,1); - while (Wire.available(]{ + 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); *request first data byte - Serial.print(i); - Serial.print(":"); - while(Wire.available()){ - byte c = Wire.read(); - Serial.print(c); //if data exist, print it out. That way you can identify which address. - } - Serial.println(" "); - delay(5); + 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); } } ``` \ No newline at end of file diff --git a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/meta.json b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/meta.json index c932c30..a4a5b62 100644 --- a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/meta.json +++ b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/meta.json @@ -4,15 +4,29 @@ "title": "Imprimante Ricoh SP C252DN", "author": "cedric@abonnel.fr", "published": true, - "published_at": "2025-01-14 07:42:58", + "featured": false, + "published_at": "2025-01-14 07:42", "created_at": "2025-01-14 07:42:58", - "updated_at": "2025-01-14 07:42:58", - "revisions": [], + "updated_at": "2026-05-16 13:15:04", + "revisions": [ + { + "n": 1, + "date": "2026-05-16 13:15:04", + "comment": "Tags modifiés, contenu modifié, image de couverture modifiée", + "title": "Imprimante Ricoh SP C252DN" + } + ], "cover": "cover.png", "files_meta": [], "external_links": [], "seo_title": "", "seo_description": "", - "og_image": "", - "category": "Informatique" + "og_image": "https://www.abonnel.fr/file?uuid=f99ab6c7-db3a-4eea-be14-593a7eb183ba&name=cover.png", + "category": "Informatique", + "tags": { + "tags": [ + "Imprimante Ricoh", + "Linux" + ] + } } diff --git a/f99ab6c7-db3a-4eea-be14-593a7eb183ba/revisions/0001.md b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/revisions/0001.md new file mode 100644 index 0000000..c07ac9d --- /dev/null +++ b/f99ab6c7-db3a-4eea-be14-593a7eb183ba/revisions/0001.md @@ -0,0 +1,160 @@ +# Imprimante Ricoh SP C252DN + +![Nom de la section](dummy.png) + +Un fichier PPD est un descripteur qui contient des informations sur les fonctionnalités de l'imprimante, telles que les résolutions d'impression disponibles, les options de finition et les polices de caractères disponibles. Les systèmes d'exploitation, y compris Linux, utilisent les informations contenues dans le PPD pour configurer l'imprimante et fournir des options d'impression avancées. + +Pour utiliser un PPD sous Linux, vous devez tout d'abord installer le pilote d'imprimante correspondant à votre imprimante. + +Pour l'imprimante **Ricoh SP C252DN** sélectionner le protocole JetDirect. + +![](20230313-201028.png) + +Choisir le pilote `Generic` > `Generic PDF Printer` + +![](20230313-201303.png) + +Sur le site https:*git.abonnel.fr/cedricAbonnel/richo_c250dn_c252dn/src/branch/main/ppd télécharger le fichier **PPD file**. + +Dans la liste des imprimantes, sélectionner le symbole `Paramètre` (![roue crantée](20230313-202024.png)) puis sélectionner `Informations sur l'imprimante` : + +![](20230313-201543.png) + +Cliquer sur le bouton `Installer le fichier PPD`. Choisir le fichier fraîchement téléchargé. Changer le nom, renseigner l'emplacement. + +![](20230313-201400.png) + +Fermer avec la croix. + +![](20230313-201855.png) + +Une fois le pilote installé, vous pouvez sélectionner l'imprimante dans les options d'impression de votre application, puis sélectionner les options d'impression disponibles. + +![](20230313-201923.png) ![](20230313-201933.png) + +En résumé, si vous disposez d'un pilote d'imprimante Linux compatible avec votre imprimante qui inclut le PPD approprié, vous pouvez utiliser le PPD pour configurer votre imprimante et profiter de toutes les fonctionnalités avancées qu'elle offre. + +# Reprogrammation de la puce de toner +Port de communication + +![](20230919-225855.png) + +![](20230919-225945.png) + +![](20230919-230131.png)![](20230919-230139.png) + +![](20230919-230155.png) + +``` +* This code updates Ricoh Toner chip for Ricoh Aficio SP C250SF, SP C250DN, C250e, etc... +* Update EEPROM_I2C_ADDRESS define value with the chip you want to reprogram +* 83 is Chip K - black +* 82 is Chip C - cyan +* 81 is Chip M - magenta +* 80 is Chip Y - yellow + +#define EEPROM_I2C_ADDRESS 83 +#include + +* blank data for K, C, M & Y chip. 128 array of data. I got it from data dump of a replacement chip. +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 correct data for chip then copy to WriteData array + 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: *default K chip data, no reason. + memcpy(WriteData,KChipData,128*sizeof(byte)); + break; + } + +- Start Wire and Serial bus + Wire.begin(); + Serial.begin(9600); + delay(100); + + Serial.println("Start"); + Serial.println(" "); + +- Start Write Chip with blank data + Serial.println("Write 128 bytes:"); + byte wordaddress; + + for(byte i=0;i<128;i++){ + wordaddress = i; + i2cwrite[^note: byte)wordaddress,(byte)WriteData[i]); + Serial.print(wordaddress); + Serial.print(":"); + Serial.print(WriteData[i]); + Serial.print(" "); + } + +- Start Read chip + 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; + } +} + +void WhatI2CAddress() { + for(int i=0;i<128;i++){ + Wire.requestFrom(i,1); *request first data byte + Serial.print(i); + Serial.print(":"); + while(Wire.available()){ + byte c = Wire.read(); + Serial.print(c); //if data exist, print it out. That way you can identify which address. + } + Serial.println(" "); + delay(5); + } +} +``` \ No newline at end of file