sane(7)
๐ NAME ๐
Okay bestie, welcome to sane(7) โ the icon itself, SANE Scanner Access Now Easy: the API for accessing scanners. Yes, that's the whole name section. She's short but she's powerful. ๐
โจ DESCRIPTION โจ
So SANE is an application programming interface (API) that gives you standardized access to any raster image scanner hardware. Literally any. And the whole point of that standardized interface? It means you write just one driver for each scanner device instead of one driver for each scanner and each application. The way that saves everyone's sanity... no cap. ๐ง
And yeah, SANE is primarily targeted at a UNIX environment, but the standard was carefully designed so the API can be implemented on virtually any hardware or operating system. She's flexible like that. ๐
This manual page gives you a summary of all the info available about SANE. Think of it as the group chat pinned message. ๐
๐ธ If you're having trouble getting your scanner detected, go read the PROBLEMS section. Fr fr, don't skip her.
๐ฆ TERMINOLOGY ๐ฆ
Let's get our vocabulary right, bestie โ iykyk:
- A SANE frontend โ an application that uses the SANE interface. She's the one asking for the scan. ๐
- A SANE backend โ a driver that implements the SANE interface. She's the one doing the actual work. ๐ฅ
- A meta backend โ provides some means to manage one or more other backends. Manager energy. Main character energy, honestly. โญ
๐ SOFTWARE PACKAGES ๐
Okay so here's the package lore:
- The package
sane-backendscontains backends, documentation, networking support, and the command line frontendscanimage(1). Everything. She ate. ๐ - The frontends
xscanimage(1),xcam(1), andscanadf(1)are included in the packagesane-frontends. Different package, same vibe. ๐
Both packages can be downloaded from the SANE homepage (http://www.sane-project.org/). And info about other frontends and backends can also be found on the SANE homepage. One stop shop. ๐
๐ธ GENERAL INFORMATION ๐ธ
The following sections give you short descriptions and links to more info about several aspects of SANE. Housekeeping first, before we get into the fun stuff:
- A name with a number in parenthesis (like
sane-dll(5)) points to a manual page. In this case,man 5 sane-dllwill display the page. Magic. โจ - Entries like
/usr/share/doc/sane-backends/READMEare references to text files that were copied to the SANE documentation directory (/usr/share/doc/sane-backends/) during installation. ๐ - Everything else is a URL to a resource on the web.
๐ป SANE homepage
Information on all aspects of SANE โ including a tutorial and a link to the SANE FAQ โ can be found on the SANE homepage: http://www.sane-project.org/. Bookmark her. She's iconic. ๐
๐ฆ SANE device lists
The SANE device lists contain info about the status of SANE support for a specific device. If your scanner is not listed there (either supported or unsupported), please contact us โ see section HOW CAN YOU HELP SANE for details. We want to know about your scanner, bestie. ๐ซถ
There are lists for specific releases of SANE, for the current development version, and a search engine: http://www.sane-project.org/sane-supported-devices.html.
The lists are also installed on your system at /usr/share/doc/sane-backends/. Offline access, periodt. ๐
๐ฌ SANE mailing list
There is a mailing list for the purpose of discussing the SANE standard and its implementations: sane-devel. And despite its name, the list is not only intended for developers โ it's for users too. So don't be shy. ๐
There are also some more lists for special topics. However, for users, sane-devel is the right list. How to subscribe and unsubscribe: http://www.sane-project.org/mailing-lists.html.
๐ฌ SANE IRC channel
The IRC (Internet Relay Chat) channel #sane can be found on the Freenode network (irc.libera.chat). It's for discussing SANE problems, talking about development, and general SANE related chatting. ๐ฃ๏ธ
๐ Before asking for help, please read the other documentation mentioned in this manual page. Do your reading first, queen.
The channel's topic is also used for announcements of problems with SANE infrastructure (mailing lists, web server, etc.). So like, check the topic, it might already be addressed. โจ
๐จ Compiling and installing SANE
Look at /usr/share/doc/sane-backends/README and the os-dependent README files for info about compiling and installing SANE. Build girlies, this one's for you. ๐
๐ฅ๏ธ SCSI configuration
For info about various systems and SCSI controllers, see sane-scsi(5). ๐ฆ
๐ USB configuration
For info about USB configuration, see sane-usb(5). Plug her in, bestie. ๐
๐ FRONTENDS AND MISCELLANEOUS PROGRAMS ๐
๐ธ scanimage
Command-line frontend. See scanimage(1). Terminal girlies rise. ๐
๐ saned
SANE network daemon that allows remote clients to access image acquisition devices available on the local host. See saned(8). Networking slay. ๐ฅ
๐ sane-find-scanner
Command-line tool to find SCSI and USB scanners and determine their UNIX device files. See sane-find-scanner(1). She finds things. She's a finder. โญ
Also, have a look at the sane-frontends package (which includes xscanimage(1), xcam(1), and scanadf(1)) and the frontend information page at http://www.sane-project.org/sane-frontends.html. Loads more where that came from. ๐
๐ BACKENDS FOR SCANNERS ๐
Bestie, this is the scanner backend roster, and itโs giving range. No skips, no โoops I forgot that oneโ โ every name is right here. ๐
abatonโ Handles Abaton flatbed scanners like theScan 300/GS(8bit, 256 levels of gray) and theScan 300/S(black and white, untested). Details are insane-abaton(5).agfafocusโ Covers AGFA Focus scanners and the Siemens S9036 (untested). Seesane-agfafocus(5).appleโ Apple flatbed scanners, includingAppleScanner,OneScannerandColorOneScanner. Seesane-apple(5).artecโ Several Artec/Ultima SCSI flatbed scanners, plus theBlackWidow BW4800SPand thePlustek 19200S. Seesane-artec(5).artec_eplus48uโ The Artec E+ 48U scanner and re-badged models like theTevion MD 9693,Medion MD 9693,Medion MD 9705andTrust Easy Webscan 19200. Seesane-artec_eplus48u(5).as6eโ The Artec AS6E parallel port interface scanner. Seesane-as6e(5).avisionโ Several Avision based scanners, including the original Avision scanners (likeAV 630,AV 620, ...) plus theHP ScanJet 53xxand74xxseries,Fujitsu ScanPartner, and some Mitsubishi and Minolta film-scanners. Seesane-avision(5).bhโ Bell+Howell Copiscan II series document scanners. Seesane-bh(5).canonโ TheCanoScan 300,CanoScan 600, andCanoScan 2700FSCSI flatbed scanners. Seesane-canon(5).canon630uโ TheCanoScan 630uand636uUSB scanners. Seesane-canon630u(5).canon_drโ Canon DR-Series ADF SCSI and USB scanners. Seesane-canon_dr(5).canon_lide70โ TheCanoScan LiDE 70and600USB scanners. Seesane-canon_lide70(5).canon_ppโ TheCanoScan FB330P,FB630P,N340PandN640Pparallel port scanners. Seesane-canon_pp(5).cardscanโ Support for Corex Cardscan USB scanners. Seesane-cardscan(5).coolscancoolscan2coolscan3โ Nikon Coolscan film-scanners. Seesane-coolscan(5),sane-coolscan2(5)andsane-coolscan3(5).epjitsuโ Epson-based Fujitsu USB scanners. Seesane-epjitsu(5).epsonโ Old driver for Epson SCSI, parallel port and USB flatbed scanners. Seesane-epson(5)โ but tryepson2first, bestie.epson2โ Newer driver for Epson SCSI, parallel port, network and USB flatbed scanners (try this beforeepson, which is outdated). Seesane-epson2(5).esclโ Scanners through the eSCL protocol. Seesane-escl(5).fujitsuโ Most Fujitsu SCSI and USB, flatbed and adf scanners. Seesane-fujitsu(5).genesysโ Several scanners based on the Genesys LogicGL646,GL841,GL843,GL847andGL124chips, like theMedion 6471andHewlett-Packard 2300c. Seesane-genesys(5).gt68xxโ Scanners based on the GrandtechGT-6801andGT-6816chips, like theArtec Ultima 2000and severalMustek BearPaw CUandTAmodels. Some Genius, Lexmark, Medion, Packard Bell, Plustek, and Trust scanners are also supported. Seesane-gt68xx(5).hpโ Hewlett-Packard ScanJet scanners that utilize SCL (Scanner Control Language by HP). Seesane-hp(5).hpsj5sโ The Hewlett-PackardScanJet 5Sscanner. Seesane-hpsj5s(5).hp3500โ The Hewlett-PackardScanJet 3500series. Seesane-hp3500(5).hp3900โ The Hewlett-PackardScanJet 3900series. Seesane-hp3900(5).hp4200โ The Hewlett-PackardScanJet 4200series. Seesane-hp4200(5).hp5400โ The Hewlett-PackardScanJet 54XXCseries. Seesane-hp5400(5).hpljm1005โ The Hewlett-PackardLaserJet M1005scanner. Seesane-hpljm1005(5).hs2pโ The RicohIS450family of SCSI scanners. Seesane-hs2p(5).ibmโ Some IBM and Ricoh SCSI scanners. Seesane-ibm(5).kodakโ Some large Kodak scanners. Seesane-kodak(5).kodakaioโ Kodak AiO printer/scanners. Seesane-kodakaio(5).kvs1025โ PanasonicKV-S102xCscanners. Seesane-kvs1025(5).leoโ TheLEO S3and theAcross FS-1130, which is a re-badgedLEO FS-1130scanner. Seesane-leo(5).lexmarkโ The LexmarkX1100series of USB scanners. Seesane-lexmark(5).lexmark_x2600โ The LexmarkX2600series of USB scanners. Seesane-lexmark_x2600(5).ma1509โ TheMustek BearPaw 1200FUSB flatbed scanner. Seesane-ma1509(5).magicolorโ TheKONICA MINOLTA magicolor 1690MFmulti-function printer/scanner/fax. Seesane-magicolor(5).matsushitaโ Some PanasonicKVSShigh speed scanners. Seesane-matsushita(5).microtekโ โSecond generationโ Microtek scanners with SCSI-1 command set. Seesane-microtek(5).microtek2โ Some Microtek scanners with a SCSI-2 command set. Seesane-microtek2(5).mustekโ Most Mustek SCSI flatbed scanners, including theParagonandScanExpressseries and the600 II Nand600 II EP(non-SCSI). Some Trust scanners are also supported. Seesane-mustek(5).mustek_ppโ Mustek parallel port flatbed scanners. Seesane-mustek_pp(5).mustek_usbโ Some MustekScanExpressUSB flatbed scanners. Seesane-mustek_usb(5).mustek_usb2โ Scanners using theSQ113chipset, like theMustek BearPaw 2448 TA ProUSB flatbed scanner. Seesane-mustek_usb2(5).necโ TheNEC PC-IN500/4CSCSI scanner. Seesane-nec(5).niashโ TheAgfa Snapscan Touchand theHP ScanJet 3300c,3400c, and4300cUSB flatbed scanners. Seesane-niash(5).p5โ ThePrimax PagePartner. Seesane-p5(5).pieโ Pacific Image Electronics (PIE) and Devcom SCSI flatbed scanners. Seesane-pie(5).pixmaโ CanonPIXMA MPseries (multi-function devices), CanonimageCLASSseries (laser devices), CanonMAXIFYseries and some CanonCanoScanseries. Seesane-pixma(5).plustekโ USB flatbed scanners that use the National SemiconductorLM983[1/2/3]chipset aka Merlin. Scanners using thisLM983xchips include some models from Plustek, KYE/Genius, Hewlett-Packard, Mustek, Umax, Epson, and Canon. Seesane-plustek(5).plustek_ppโ Plustek parallel port flatbed scanners using the Plustek ASICP96001,P96003,P98001andP98003, which includes some models from Plustek, KYE/Genius, Primax. Seesane-plustek_pp(5).ricohโ The Ricoh flatbed scannersIS50andIS60. Seesane-ricoh(5).ricoh2โ The Ricoh flatbed scanners:SG-3100SNw,SP-100SU, andSP-111SU. Seesane-ricoh2(5).s9036โ Siemens9036flatbed scanners. Seesane-s9036(5).sceptreโ TheSceptre S1200flatbed scanner. Seesane-sceptre(5).sharpโ Sharp SCSI scanners. Seesane-sharp(5).sm3600โ TheMicrotek ScanMaker 3600USB scanner. Seesane-sm3600(5).sm3840โ TheMicrotek ScanMaker 3840USB scanner. Seesane-sm3840(5).snapscanโ AGFA SnapScan flatbed scanners, including some which are rebadged to other brands. Seesane-snapscan(5).sp15cโ TheFujitsu FCPA ScanPartner 15Cflatbed scanner. Seesane-sp15c(5).st400โ TheSiemens ST400andST800. Seesane-st400(5).tamarackโ Tamarack Artiscan flatbed scanners. Seesane-tamarack(5).teco1teco2teco3โ Some TECO scanners, usually sold under the Relisys, Trust, Primax, Piotech, Dextra names. Seesane-teco1(5),sane-teco2(5)andsane-teco3(5).u12โ USB flatbed scanners based on Plustekโs ASIC98003(parallel-port ASIC) and a GeneSys Logicsโ USB-parport bridge chip, like thePlustek OpticPro U(T)12. Seesane-u12(5).umaxโ UMAX-SCSI-scanners and some Linotype Hell SCSI-scanners. Seesane-umax(5).umax_ppโ Umax parallel port flatbed scanners and theHP 3200C. Seesane-umax_pp(5).umax1200uโ TheUMAX Astra 1220U(USB) flatbed scanner (and also theUMAX Astra 2000U, sort of). Seesane-umax1220u(5).xerox_mfpโ Multiple Samsung-based Samsung, Xerox, and Dell scanners. Seesane-xerox_mfp(5).
Also, have a look at the backend information page at http://www.sane-project.org/sane-supported-devices.html and the list of projects in /usr/share/doc/sane-backends/PROJECTS.
๐ BACKENDS FOR DIGITAL CAMERAS ๐
Now the camera girlies get their moment too. ๐ธโจ
dc210โ TheKodak DC210Digital Camera. Seesane-dc210(5).dc240โ TheKodak DC240Digital Camera. Seedc240(5).dc25โ KodakDC20/DC25Digital Cameras. Seedc25(5).dmcโ ThePolaroid Digital Microscope Camera. Seedmc(5).gphoto2โ Digital cameras supported by the gphoto2 library package. (Seehttp://www.gphoto.orgfor more information and a list of supported cameras.) Gphoto2 supports over 140 different camera models. However, please note that more development and testing is needed before all of these cameras will be supported by SANE backend. Seegphoto2(5).qcamโConnectix QuickCamcameras. Seeqcam(5).stv680โ Webcams with astv680chip. Seestv680(5)for details.
Also, have a look at the backend information page at http://www.sane-project.org/sane-supported-devices.html and the list of projects in /usr/share/doc/sane-backends/PROJECTS.
๐ MISCELLANEOUS BACKENDS ๐
okay so these ones don't fit in the camera or scanner boxes, but they're lowkey iconic in their own way:
dllโ bestie this is the meta one ๐ it implements a SANE backend that gives you access to an arbitrary number of other SANE backends by dynamic loading. Seesane-dll(5).netโ the SANE network daemonsaned(8)hooks you up with scanners living on completely different computers, working together with thesane-net(5)backend. Seesaned(8).pnmโ a PNM image reader pseudo-backend โจ its whole purpose is basically to help debug SANE frontends. Seesane-pnm(5).pintโ supports scanners that use the PINT (Pint Is Not Twain) device driver. The PINT driver is being actively developed on the OpenBSD platform and has been ported to a few other *NIX-like operating systems. Seesane-pint(5).testโ literally tests frontends and the SANE installation itself ๐งช gives you test pictures and various test options. Seesane-test(5).v4lโ generic access to video cameras and similar equipment using the V4L (Video for Linux) API. Seesane-v4l(5).
alsooo, go peek at the backend information page at http://www.sane-project.org/sane-supported-devices.html and the list of projects in /usr/share/doc/sane-backends/PROJECTS. iykyk ๐
โจ CHANGING THE TOP-LEVEL BACKEND โจ
so by default, literally all SANE backends (drivers) get loaded dynamically by the sane-dll meta backend. if you have any questions about dynamic loading, read sane-dll(5) ๐ฆ
SANE frontends can also be linked to other backends directly โ by copying or linking a backend to libsane.so in /usr/lib64/sane.
๐ธ DEVELOPER'S DOCUMENTATION ๐ธ
ngl bestie, it's not hard to write a SANE backend. it can take some time though ๐ญ you should have basic knowledge of C and enough patience to work through the documentation and find out how your scanner actually works. appended below is a list of some documents that help you write backends and frontends.
The SANE standard defines the application programming interface (API) that's used to communicate between frontends and backends ๐ you can find it at http://sane-project.gitlab.io/standard/ .
There's some more info for programmers in /usr/share/doc/sane-backends/backend-writing.txt. most of the internal SANE routines (sanei) are documented using doxygen: http://www.sane-project.org/sanei/ . and before you start a new backend or frontend project, please have a look at /usr/share/doc/sane-backends/PROJECTS for projects that are planned or not yet included in the SANE distribution, and at our bug-tracking system: http://www.http://www.sane-project.org/bugs.html .
yes, that URL really is written like that in here ๐ we're keeping it exactly as-is, no cap.
There are some links on how to find out about the protocol of a scanner: http://www.meier-geinitz.de/sane/misc/develop.html .
and if you start writing a backend or frontend or literally any other part of SANE, please contact the sane-devel mailing list for coordination so that work is not duplicated ๐ซถ teamwork makes the dream work fr fr.
๐ FILES ๐
/etc/sane.d/*.confโ the backend configuration files./usr/lib64/sane/libsane-*.aโ the static libraries implementing the backends./usr/lib64/sane/libsane-*.soโ the shared libraries implementing the backends (present on systems that support dynamic loading)./usr/share/doc/sane-backends/*โ SANE documentation: the READMEs, text files for backends, etc.
๐ญ PROBLEMS ๐ญ
okay so your device isn't found but you know it's supported? first vibe check: make sure it's actually detected by your operating system. for SCSI and USB scanners, use the sane-find-scanner(1) utility. it prints one line for each scanner it has detected, plus some comments (#).
if sane-find-scanner(1) finds your scanner only as root but not as a normal user, the permissions for the device files aren't adjusted correctly ๐ฅ if the scanner isn't found at all, the operating system hasn't detected it and may need some help. depending on the type of your scanner, read sane-usb(5) or sane-scsi(5). and if your scanner (or other device) isn't connected over the SCSI bus or USB, read the backend's manual page for details on how to set it up.
So is your scanner detected by the operating system but not by SANE? try scanimage -L. if the scanner isn't found, check that the backend's name is mentioned in /etc/sane.d/dll.conf. some backends are commented out by default โ remove the comment sign for your backend in this case ๐
also, some backends aren't compiled at all if one of their prerequisites is missing. examples include dc210, dc240, canon_pp, hpsj5s, gphoto2, pint, qcam, v4l, net, sm3600, snapscan, pnm. if you need one of these backends and it isn't available, read the build instructions in the README file and the individual manual pages of the backends ๐
Another reason for not being detected by scanimage -L may be a missing or incorrect configuration in the backend's configuration file. while SANE tries to automatically find most scanners, some can't be set up correctly without the intervention of the administrator. also on some operating systems auto-detection may just not work. check the backend's manual page for details ๐ฆ
If your scanner is still not found, try setting the various environment variables that are available to assist in debugging. the environment variables are documented in the relevant manual pages. for example, to get the maximum amount of debug information when testing a Mustek SCSI scanner, set environment variables SANE_DEBUG_DLL, SANE_DEBUG_MUSTEK, and SANE_DEBUG_SANEI_SCSI to 128, and then invoke scanimage -L. the SANE_DEBUG_DLL messages tell you if the sane-mustek(5) backend was found and loaded at all. the SANE_DEBUG_MUSTEK messages explain what the backend is doing, while the SANE_DEBUG_SCSI debugging shows the low level handling. if you can't figure out what's going on by checking the messages carefully, contact the sane-devel mailing list for help (see REPORTING BUGS below) ๐ซถ
Now that your scanner is found by scanimage -L, try to do a scan:
scanimage >image.pnm
this command starts a scan for the default scanner with default settings โจ all the available options are listed by running scanimage --help. if scanning aborts with an error message, turn on debugging as mentioned above. maybe the configuration file needs some tuning, e.g. to set up the path to a firmware that's needed by some scanners โ see the backend's manual page for details. if you can't find out what's wrong, contact sane-devel ๐ญ
To check that the SANE libraries are installed correctly you can use the test backend, even if you don't have a scanner or other SANE device:
scanimage -d test -T
you should get a list of PASSed tests ๐ you can do the same with your backend by changing "test" to your backend's name.
So now scanning with scanimage (1) works and you wanna use one of the graphical frontends like xsane(1), xscanimage(1), or quiteinsane(1), but those frontends don't detect your scanner? hmm. one reason may be that you installed two versions of SANE ๐ e.g. the version that was installed by your distribution in /usr and one you installed from source in /usr/local/. make sure only one version is installed!
Another possible reason is that your system's dynamic loader can't find the SANE libraries. for Linux, make sure that /etc/ld.so.conf contains /usr/local/lib and does not contain /usr/local/lib/sane. see also the documentation of the frontends ๐
๐ HOW CAN YOU HELP SANE ๐
we appreciate any help we can get, fr fr ๐ซถ please have a look at our web page about contributing to SANE: http://www.sane-project.org/contrib.html
๐ CONTACT ๐
for reporting bugs or requesting new features, please use our bug-tracking system: http://www.sane-project.org/bugs.html .
you can also contact the author of your backend directly โ usually the email address can be found in the /usr/share/doc/sane-backends/AUTHORS file or the backend's manpage. for general discussion about SANE, please use the SANE mailing list sane-devel (see http://www.sane-project.org/mailing-lists.html for details) ๐
โญ SEE ALSO โญ
saned(8), sane-find-scanner(1), scanimage(1), sane-abaton(5), sane-agfafocus(5), sane-apple(5), sane-artec(5), sane-artec_eplus48u(5), sane-as6e(5), sane-avision(5), sane-bh(5), sane-canon(5), sane-canon630u(5), sane-canon_dr(5), sane-canon_pp(5), sane-cardscan(5), sane-coolscan(5), sane-coolscan2(5), sane-coolscan3(5), sane-dc210(5), sane-dc240(5), sane-dc25(5), sane-dll(5), sane-dmc(5), sane-epson(5), sane-epson2(5), sane-escl(5), sane-fujitsu(5), sane-genesys(5), sane-gphoto2(5), sane-gt68xx(5), sane-hp(5), sane-hpsj5s(5), sane-hp3500(5), sane-hp3900(5), sane-hp4200(5), sane-hp5400(5), sane-hpljm1005(5), sane-ibm(5), sane-kodak(5), sane-leo(5), sane-lexmark(5), sane-lexmark_x2600(5), sane-ma1509(5), sane-matsushita(5), sane-microtek2(5), sane-microtek(5), sane-mustek(5), sane-mustek_pp(5), sane-mustek_usb(5), sane-mustek_usb2(5), sane-nec(5), sane-net(5), sane-niash(5), sane-pie(5), sane-pint(5), sane-plustek(5), sane-plustek_pp(5), sane-pnm(5), sane-qcam(5), sane-ricoh(5), sane-ricoh2(5), sane-s9036(5), sane-sceptre(5), sane-scsi(5), sane-sharp(5), sane-sm3600(5), sane-sm3840(5), sane-snapscan(5), sane-sp15c(5), sane-st400(5), sane-stv680(5), sane-tamarack(5), sane-teco1(5), sane-teco2(5), sane-teco3(5), sane-test(5), sane-u12(5), sane-umax1220u(5), sane-umax(5), sane-umax_pp(5), sane-usb(5), sane-v4l(5), sane-xerox_mfp(5)
๐ AUTHOR ๐
David Mosberger-Tang and many many more (see /usr/share/doc/sane-backends/AUTHORS for details). this man page was written by Henning Meier-Geinitz โจ quite a lot of text was taken from the SANE standard, several man pages, and README files ๐ซถ
and that's a wrap bestie!! ๐
โจ this whole glowing masterpiece is from 03 Jan 2020, and it's the sane(7) page itself โ slay, go scan something iconic ๐๐ฆ
๐ฆ where this page comes from
- fedora 43: sane-backends 1.4.0-4.fc43 ยท GPL-2.0-or-later WITH SANE-exception AND GPL-2.0-or-later AND GPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND IJG AND MIT
- fedora 44: sane-backends 1.4.0-6.fc44 ยท GPL-2.0-or-later WITH SANE-exception AND GPL-2.0-or-later AND GPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND IJG AND MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms