{"id":18425929,"url":"https://github.com/florianbecker/innovation-it-python-unicode","last_synced_at":"2025-04-13T18:18:47.894Z","repository":{"id":54823703,"uuid":"273672941","full_name":"florianbecker/Innovation-IT-python-unicode","owner":"florianbecker","description":"Innovation IT NVMe firmware has an issue with python unicode decode","archived":false,"fork":false,"pushed_at":"2021-01-27T06:55:30.000Z","size":4495,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T02:47:10.507Z","etag":null,"topics":["innovation","made-in-china","nvme","nvme-firmware","python-unicode","ssd","unicode-sign","whitelabel"],"latest_commit_sha":null,"homepage":"https://www.innovationit.de","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/florianbecker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-20T08:57:01.000Z","updated_at":"2023-01-24T13:56:37.000Z","dependencies_parsed_at":"2022-08-14T04:00:24.178Z","dependency_job_id":null,"html_url":"https://github.com/florianbecker/Innovation-IT-python-unicode","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianbecker%2FInnovation-IT-python-unicode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianbecker%2FInnovation-IT-python-unicode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianbecker%2FInnovation-IT-python-unicode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/florianbecker%2FInnovation-IT-python-unicode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/florianbecker","download_url":"https://codeload.github.com/florianbecker/Innovation-IT-python-unicode/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248758429,"owners_count":21156959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["innovation","made-in-china","nvme","nvme-firmware","python-unicode","ssd","unicode-sign","whitelabel"],"created_at":"2024-11-06T05:06:24.142Z","updated_at":"2025-04-13T18:18:47.868Z","avatar_url":"https://github.com/florianbecker.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Innovation IT python unicode decode\nInnovation IT NVMe firmware has an issue in combination with python unicode decode.\n\n\u003cimg src=\"nvme.jpeg\" alt=\"Ubuntu 20.04 Installer\" width=\"800\" height=\"396\"/\u003e\n\n# NVMe-cli\n```bash\nnvme list\nNode             SN                   Model                                    Namespace Usage                      Format           FW Rev  \n---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------\n/dev/nvme0n1     AA000000000000000131 INNOVATION��IT                           1         512,11  GB / 512,11  GB    512   B +  0 B   S0614B0G\n```\nAs you can see, there are two signs of multibyte char with defect unicode output.\n\n# fdisk\n```bash\nfdisk --l /dev/nvme0n1\nDisk /dev/nvme0n1: 476,96 GiB, 512110190592 bytes, 1000215216 sectors\nDisk model: INNOVATION��IT                          \nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisklabel type: gpt\nDisk identifier: 03C9D6B2-0E03-419E-B1F4-E70B7062B1EF\n\nDevice           Start        End   Sectors   Size Type\n/dev/nvme0n1p1    2048    1050623   1048576   512M EFI System\n/dev/nvme0n1p2 1050624 1000212479 999161856 476,4G Linux filesystem\n```\n\n# Block device\n```bash\ncat /sys/class/block/nvme0n1/device/model\nINNOVATION��IT\n```\n\n# Example\n\n## Run python example\nThis is a minimum example for the overall exception. Please edit your device, if needed.\n```bash\npython3 read_model.py\nTraceback (most recent call last):\n  File \"read_model.py\", line 34, in \u003cmodule\u003e\n    print(f.read())\n  File \"/usr/lib/python3.8/codecs.py\", line 322, in decode\n    (result, consumed) = self._buffer_decode(data, self.errors, final)\nUnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 10: invalid start byte\n```\n\n## Fixed python example for this special case\nThis minimum example is based on above example and ignores decoding errors.\n```bash\npython3 read_model_quick_code_fix.py\nINNOVATIONIT\n```\n\n# Result\n- Linux systems like Ubuntu or RHEL, use a graphical installer and except because of this unicode sign.\n- You are not able to install a system, only without installer for Ubuntu. I was not able to install RHEL in any case.\n- The company behind Innovation IT products needs to update thier firmware and remove these unicode sign from model to work probably and even more correct.\n- If you plan to buy a system with these NVMe, only do so if you not want to use linux as the host system.\n\n# Installer Exceptions\n\n\u003cimg src=\"ubuntu.jpeg\" alt=\"Ubuntu 20.04 Installer\" width=\"400\" height=\"533\"/\u003e\u003cimg src=\"rhel8.jpeg\" alt=\"Red Hat Enterprise 8 Installer\" width=\"400\" height=\"533\"/\u003e\n\n# Reported bugs\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1849326\n\n# Mitigation\n\nFortunately, for some unknown reason, one is able to find the manufacturer tool for the SSD's controller `SM2263XT`\non the internet. That means that we can simply change the name to something less broken ourselves.\n\n**Warning** Reflashing the firmware parameters of the SSD **will erase all data** on it as well as may cause long-term data loss, a bricked SSD etc.\nThere is however a `FORCE-ROM mode` accessible via the one jumper on the board, which enables recovery after a bad flash.\nIn any case keep in mind, that you're doing this on your own risk.\n\nTo rename your drive, you're looking for a File named `SM2263XT_MP_S0620A_B16_B17_FW_S0614B0_RDT_S0617A.rar`. Keep in mind that using that\nmeans running untrusted code with root privileges on your machine.\nIt is therefore strongly recommended to use a clean Windows 10 install for this and detach all other storage devices\nas well as the network connection when running the tool.\n\nFurthermore, you will also need to replace the default windows NVME driver with the one of the manufacturer,\nsince only that enables the access needed to reflash the SSD. For this reason alone, it makes sense to use a clean and seperate\nWindows installation. The Driver is digitally signed though so that's something.\nIt can be found in an archive named `SM2263XT_MP_R0320A_B16_FW_R0222B0_RDT_R0320A.rar`.\n\nAfter you've downloaded and extracted the archive, you will need to open the Windows Device Manager to replace the NVME-Driver\nwith the one found in the `Nvme` folder of said archive. \n\nWith the driver installed and the system rebooted, you'll then need to launch the `SM2263XT_MPTool_R0320A.exe` and hopefully\nsee your broken Innovation IT SSD there.\n\n![Manufacturer tool main](./tool_main.png)\n\nSwitch to the `Parameter` Tab and click on `Edit Config`. The Passwort is two spaces `  `.\n\nIf everything is working, clicking the `Auto` button for `Flash Select` should leave you with a few options to choose from.\n\nThe following screenshot shows the settings, which have been proven working by the author:\n\n![Manufacturer tool parameters](./tool_parameters.png)\n\nSimply replicate those and you _should_ be fine. You _may_ want to uncheck `Modify CID`. That wasn't tested though.\n\nDon't forget to click `Save` after changing the parameters!\n\nTo flash these new parameters, switch back to the `Main` Tab and click `Start`.\n\n![Crystal Disk Info Screenshot](./crystaldiskinfo_screenshot_after_flash.png)\n\nCongratulations! You're now the owner of a slightly less broken cheap SSD.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianbecker%2Finnovation-it-python-unicode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflorianbecker%2Finnovation-it-python-unicode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflorianbecker%2Finnovation-it-python-unicode/lists"}