$ 292.55
In-App Purchases| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 1442 |
| Technical Name |
grev_od_universal_android_pos_print |
| License | OPL-1 |
| Website | https://grevlin.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 1442 |
| Technical Name |
grev_od_universal_android_pos_print |
| License | OPL-1 |
| Website | https://grevlin.com |
|
🖨 SUNMI & iMin • NO IoT BOX
Universal Android POS Printer for OdooPrint receipts, kitchen tickets and open the cash drawer on Sunmi and iMin Android POS terminals — one module, two native SDKs, zero IoT hardware.
|
|
Works on every Sunmi and iMin Android POS terminal that exposes its native Inner Printer service, through the official vendor JS SDKs.
|
|
|
|
|
|
Need Help?
Questions, feedback or a specific Android device to support? Follow us on X: @GrevlinGlobal ✨ 30 days free support included |
Universal Android POS Printer for Odoo - Documentation
This module turns any Sunmi or iMin Android POS terminal with a built-in thermal printer into a native Odoo POS receipt printer, without an IoT Box, a LAN printer, or any ESC/POS hardware.
The module ships the two native vendor JS SDKs (Sunmi and iMin) and lets Odoo POS pick the right one per pos.printer record, so one POS session can drive a receipt printer, a kitchen printer and a bar printer at the same time.
Overview
The module ships two print drivers and lets Odoo POS pick the right one per printer record:
- Sunmi JS SDK — on-device WebSocket to the Sunmi printer service, using the official Sunmi JavaScript SDK bundled with the module.
- iMin JS SDK — on-device WebSocket plus HTTP bitmap upload to the iMin printer service, using the official iMin JavaScript SDK.
Key Features
- Works on every Sunmi and iMin Android POS terminal with a built-in thermal printer
- Multi-printer per POS — drive a receipt printer, a kitchen printer and a bar printer at the same time, each on its own brand and driver
- Auto-detect for the main receipt printer in the order Sunmi SDK → iMin SDK
- 58mm and 80mm paper widths, configurable at POS level and per printer
- Receipt customization: logo, footer text, customer name and QR code (order reference, website URL or custom text)
- Kitchen ticket routing by POS category
- Opens the cash drawer on cash payments
- No IoT Box, no LAN printer, no extra hardware
Requirements
- Odoo 19.0 (Community or Enterprise)
- A Sunmi or iMin Android POS terminal with a built-in thermal printer
- The Odoo POS is opened directly on the Android terminal in its Chrome / WebView
Note
The Sunmi and iMin JS SDKs only expose their on-device WebSocket to applications running on the terminal itself. Opening the POS from a desktop browser pointing to the same device is not supported.
Installation
- Copy the grev_od_universal_android_pos_print folder into your Odoo addons path
- Restart the Odoo server
- Go to :menuselection:`Apps` and click :guilabel:`Update Apps List`
- Search for Universal Android POS Printer for Odoo
- Click :guilabel:`Install`
Important
The module depends only on point_of_sale. No additional Python packages or system libraries are required on the server side.
Configuration
Select the print mode
- Go to :menuselection:`Point of Sale --> Configuration --> Point of Sale`
- Open the POS configuration used on the Android terminal
- In the :guilabel:`Printers` section, set :guilabel:`Android Print Mode`
to one of:
- :guilabel:`Auto-detect (recommended)` — picks Sunmi SDK or iMin SDK automatically at runtime
- :guilabel:`Sunmi JS SDK (Sunmi devices only)`
- :guilabel:`iMin JS SDK (iMin devices only)`
- :guilabel:`Disabled`
- Select the :guilabel:`Paper Width` (58mm or 80mm) matching the paper roll loaded in the terminal
- Click :guilabel:`Save`
Tip
Leave the print mode on :guilabel:`Auto-detect` unless you need to pin a specific driver. Auto-detect is the fastest path to a working POS on mixed fleets.
Receipt customization
Under the same POS configuration, the module adds:
- :guilabel:`Print Logo on Receipt` with an optional :guilabel:`Receipt Logo` image (PNG or JPG, max 400px wide)
- :guilabel:`Print Footer Text` and the :guilabel:`Footer Text` content
- :guilabel:`Print Customer Name`
- :guilabel:`Print QR Code` with :guilabel:`QR Content` set to :guilabel:`Order Reference`, :guilabel:`Website URL` or :guilabel:`Custom Text`
- :guilabel:`Auto-print on Payment` and :guilabel:`Number of Copies`
Kitchen ticket routing
- On the POS configuration, enable :guilabel:`Kitchen Ticket Printing`
- Pick the :guilabel:`Kitchen Categories` whose products should appear on kitchen tickets
- Go to :menuselection:`Point of Sale --> Configuration --> Order Printers`
- Create or open a printer record
- Set :guilabel:`Printer Type` to :guilabel:`Android Universal Printer`
- Choose the per-printer :guilabel:`Android Driver` (:guilabel:`Sunmi JS SDK` or :guilabel:`iMin JS SDK`)
- Select the :guilabel:`Paper Width`
- Assign the printer to the relevant POS categories
Usage
Print a receipt
- Open Odoo POS on the Android terminal
- Add products to the order
- Click :guilabel:`Payment`, select the payment method and click :guilabel:`Validate`
- The receipt is printed on the built-in thermal printer
- On cash payments, the cash drawer opens automatically
Print a kitchen ticket
- Add one or more products belonging to a category assigned to an Android kitchen printer
- Click :guilabel:`Order`
- The kitchen ticket is printed immediately on the target Android terminal, through its configured driver
Reprint a receipt
Reprinting a receipt from the POS order history goes through the same Android driver path, so the behavior is identical to the original print.
Technical Details
Architecture
The module extends three standard Odoo models:
- pos.config — adds android_print_mode and the full set of per-POS Android printer settings (paper width, receipt customization, auto-print, kitchen routing)
- pos.printer — adds an android_driver selection and per-printer paper width, used to dispatch each order/kitchen printer to the matching driver
- res.config.settings — exposes the fields above in the POS settings page
JavaScript drivers live under static/src/app/utils/ and are loaded through the point_of_sale._assets_pos bundle:
- sunmi_sdk_driver.js — WebSocket ws://localhost:7070/ws, uses the SUNMI global from static/lib/sunmi_sdk.js
- imin_sdk_driver.js — WebSocket ws://127.0.0.1:8081/websocket plus HTTP http://127.0.0.1:8081/upload for bitmaps, uses the IminPrinter global from static/lib/imin-printer.js
Note
The module defines no new model. All behavior lives on existing Odoo POS entities, which keeps it upgrade-safe and compatible with other POS customizations.
Supported Android POS devices
| Brand | Example models | Driver |
|---|---|---|
| Sunmi | V2, V2 Pro, V2s, P2, T2, T2s, T3, D2, D2s, D3 | Sunmi JS SDK |
| iMin | Swan1, Swan2, Falcon1, D3 Pro, M2 Max | iMin JS SDK |
Limitations
- Printing requires the POS to run on the Android terminal itself
- Only built-in Sunmi and iMin thermal printers are targeted — external USB or network printers are not handled by this module
- Other Android POS brands (PAX, Urovo, Telpo, Newland, generic OEM) are planned for a future release
See also
- :doc:`../../grev_od_sunmi_direct_print/doc/index`
- Grevlin website
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module