নির্মাণ

Mac থেকে Fazua Ride 50 speed unlock, কোনো বক্স ছাড়াই

TL;DR: Fazua Ride 50 তার ২৫ km/h limit ড্রাইভপ্যাকে একটি ভ্যালু হিসেবে সেভ করে। firmware 2.04 এ আপনি এটি USB এর মাধ্যমে পরিবর্তন করতে পারেন। আমি এটি একটি MacBook Pro M4 থেকে করেছি। open source tool টি শুধুমাত্র Windows এর জন্য ছিল, তাই আমার এজেন্ট এর USB layer টি hidapi দিয়ে বদলে দিয়েছে। Firmware 2.50 কে প্রথমে 2.04 এ ফিরিয়ে নিতে হয়েছে, অফিসিয়াল FAZUA Toolbox এর মাধ্যমে। 2.04 ফাইলটি fazua.com থেকে নেওয়া আসল ফাইল। লেখার পর আবার চেক করে দেখা গেল ৫৫.০১ km/h। এর জন্য Badass Box এর প্রয়োজন নেই।

লিখেছেন Emin Mahrt

7 মিনিটে পড়া যায়

English থেকে মেশিন অনুবাদ। মূলটি হলো রেফারেন্স: মূলটি পড়ুন.

এছাড়াও উপলব্ধ العربية, Deutsch, English, Español, Français, हिन्दी, Bahasa Indonesia, Português, اردو, 中文.

বাইক আর সমস্যাটা

আমার বাইকটা একটা Canyon Roadlite:ON AL 7.0, ২০২০ সালের, সাইজ M, রং pace grey আর কমলা। মোটরটা Fazua Evation, যেটাকে Fazua আজকাল Ride 50 Evation বলে। ড্রাইভপ্যাকটা, মোটর আর ব্যাটারি এক লম্বা টুকরোয়, বসে থাকে ডাউন টিউবের ভেতরে আর একটা লিভার টানলেই বেরিয়ে আসে। ব্যাটারিটা Energy 250, টাচ রিমোটটা ফ্রেমের ভেতরেই বানানো। হ্যান্ডেলবারে কোনো ডিসপ্লে নেই, তাই বাইকটা কখনোই বলে না তুমি কত গতিতে যাচ্ছ।

এর আগে আমার ড্রাইভপ্যাকে চলছিল ফার্মওয়্যার 2.50 আর ব্যাটারিতে ফার্মওয়্যার 1.15। এটা আমি শুধু জানি কারণ FAZUA Toolbox দিয়ে পড়ে নিয়েছিলাম, নিচে দেখো।

অ্যাসিস্ট বন্ধ হয়ে যায় ২৫ কিমি/ঘণ্টায়, EU-র সব pedelec-এর মতোই। আমি দেখতে চেয়েছিলাম আরেকটু বেশি গতিতে বাইকটা কেমন লাগে। তাই ৭ অক্টোবর আমি একটা Badass Box 4 কিনলাম, Fazua-র জন্য। এ নিয়ে লিখেছি Badass Box 4 on a Fazua Ride 50, the yellow light-এ। এক-দুই মিনিট কাজ করল, তারপর উপরের LED-টা আবার হলুদ ঝলমল করতে লাগল। ম্যাগনেট আরও কাছে, অন্য স্পোক, ৯০ ডিগ্রি ঘোরানো, Badass সাপোর্ট বলল ইনস্টলেশন ঠিকঠাক দেখাচ্ছে। তাও কয়েক মিনিট চালানোর পর হলুদ।

আইডিয়াটা, সেন্সর ঠকানোর বদলে একটা সংখ্যা বদলানো

Badass Box-টা বসে চেইনস্টে-তে স্পিড সেন্সরের উপর আর স্পোক ম্যাগনেটের পালস বদলে দেয়, যাতে মোটর ভাবে তুমি আসলের চেয়ে ধীরে যাচ্ছ। এটা সিগন্যালের উপর একটা চালাকি, আর আমার বাইকে Fazua কিছুক্ষণ পরেই টের পেয়ে গেল আর একটা soft fault দেখাল।

মোটর নিজে শুধু তোমার গতির সঙ্গে একটা জমানো মান তুলনা করে। Fazua একে বলে bikeMaxSpeed। ডিলাররা Toolbox-এ এটা দেখতে পায়, কিন্তু সাধারণ ইউজারদের জন্য এটা ধূসর করে দেওয়া। ওই মানটা বদলে দিলে ঠকানোর কিছুই থাকে না। সেন্সর আসল গতি জানায় আর মোটর শুধু আরও বেশিক্ষণ সাহায্য করে।

আমার এজেন্ট দুটো উপায় খুঁজে পেল। ইতালীয় কোম্পানি Eplus বিক্রি করে Flash Home, দাম ১৩৪ ইউরো plus VAT, শুধু Windows। আর আছে FazuaUnlocker GitHub-এ, quezzas-এর বানানো, ফ্রি, MIT লাইসেন্স, এটাও শুধু Windows। দুটোই একই কথা বলে। ফার্মওয়্যার 2.04-এ কাজ করে। 2.50-তে আগে 2.04-এ ফিরে যেতে হয়।

আগে (বক্স)                           পরে (সফটওয়্যার)

স্পোক ম্যাগনেট -> [বক্স] -> সেন্সর        স্পোক ম্যাগনেট -> সেন্সর
                 |  নকল ধীর গতি                         |  আসল গতি
                 v                                       v
ড্রাইভপ্যাক: লিমিট ২৫ কিমি/ঘণ্টা               ড্রাইভপ্যাক: লিমিট ৫৫ কিমি/ঘণ্টা
           -> ১-২ মিনিট পর হলুদ                -> বক্স নেই, হলুদ নেই

আমি যা ব্যবহার করেছি

  1. বাইকটা, ব্যাটারি পুরো চার্জ করা।
  2. একটা MacBook Pro M4, ১৬ জিবি, macOS 15.5। এটা চলে Apple Silicon-এ, Windows নেই, ভার্চুয়াল মেশিন নেই।
  3. একটা mini USB ডেটা কেবল। শুধু চার্জিং কেবল নয়।
  4. USB ক্যাপ খোলার জন্য একটা Torx T10 স্ক্রুড্রাইভার।
  5. FAZUA Toolbox 2.29 basic, Apple Silicon-এর জন্য macOS সংস্করণ, Fazua-র ওয়েবসাইট থেকে।
  6. ফার্মওয়্যার 2.04, ফাইল evation_Software_2.04.bin। আসল fazua.com লিংকটা আর নেই, কিন্তু Internet Archive ৯ জুলাই ২০২২ থেকে রেখে দিয়েছে। SHA-256 8fe885c9dfc7caa9cf8e61b88051bf8d42da53747c4fd86d2b72c3c2ef23d32e। আমার এজেন্ট এটার সঙ্গে GitHub-এ ঘোরাঘুরি করা কপিটা তুলনা করেছে, আর দুটো বাইট টু বাইট একই।
  7. FazuaUnlocker-এর আমার ফর্ক, github.com/eminogrande/FazuaUnlocker, Python 3.9 আর hidapi লাইব্রেরি সহ।

আসল টুলটা ড্রাইভপ্যাকের সঙ্গে কথা বলে Windows USB ফাংশন দিয়ে। আমার এজেন্ট প্রোটোকল, চেকসাম আর লেখার লজিক হুবহু রেখে শুধু ওই একটা স্তর বদলে hidapi বসিয়েছে, যেটা macOS-এও চলে। এটাই সেই ফাইল fazua_mac.py, মোটামুটি ৭৫ লাইন। ফার্মওয়্যারটা নিজে এনক্রিপ্ট করা, তাই এখানে কেউ ফার্মওয়্যার বদলাচ্ছে না। টুলটা শুধু একটা সেটিং বদলায়।

ধাপ ১, ড্রাইভপ্যাকটা Mac-এর সঙ্গে যুক্ত করা

  1. ড্রাইভপ্যাকটা বাইক থেকে বের করো। ব্যাটারি ড্রাইভপ্যাকের ভেতরেই থাকে আর সেটা চালু থাকতে হবে।
  2. T10 দিয়ে ড্রাইভপ্যাকের USB ক্যাপটা খোলো। এটা নিচের দিকে কুলিং ফিনগুলোর কাছে থাকে।
  3. mini USB কেবলটা Mac-এ লাগাও আর ড্রাইভপ্যাকটা মেঝে বা টেবিলে শুইয়ে রাখো।
  4. দেখো Mac চিনতে পারছে কি না। টার্মিনালে system_profiler SPUSBDataType | grep evation আমার ক্ষেত্রে দেখাল evation v2.50। টুলের কাছে এটা একটা USB HID ডিভাইস, ID 10C4:1001।

Fazua নিজের গাইডেই বলে ফার্মওয়্যার আপডেটের জন্য শুধু ড্রাইভপ্যাকটাই লাগে, পুরো বাইক নয়। এর কোনো কিছুর জন্যই চাকা ঘোরানো দরকার নেই।

ধাপ ২, লেখার আগে পড়ো

আগে FAZUA Toolbox বন্ধ করো, কারণ সেটা USB সংযোগটা ধরে রাখে। তারপর:

git clone https://github.com/eminogrande/FazuaUnlocker.git
cd FazuaUnlocker
python3 -m venv .venv && .venv/bin/pip install -r requirements-mac.txt
.venv/bin/python fazua_mac.py --read-only

আমারটা মোটামুটি ১১০ মিলিসেকেন্ড পর জবাব দিল। Max Bike Speed 24.98 km/h, raw মান 694। Wheel length 2121 mm। Shaft offset 30533। টুলটা ওই offset থেকে একটা ছোট write key বের করে, আমারটা ছিল ba88। আমার এজেন্ট এই রিডআউটটা একটা JSON ফাইলে সেভ করে রেখেছে, যাতে আমি যেকোনো সময় হুবহু এই মানগুলোতে ফিরে যেতে পারি।

তারপর একটা dry run, যেটা চেকসামসহ লেখার প্যাকেট বানায় কিন্তু কিছু পাঠায় না:

.venv/bin/python fazua_mac.py 55 --dry-run

ধাপ ৩, 2.04-এ ডাউনগ্রেড

এটাই আসল ঝুঁকির জায়গা। ফ্ল্যাশ আধখানা থেমে গেলে ড্রাইভপ্যাক মরে যেতে পারে। তাই ব্যাটারি ফুল, কেবল শক্ত করে লাগানো, ড্রাইভপ্যাক স্থির শুয়ে থাকবে।

  1. FAZUA Toolbox খোলো, FIRMWARE UPDATE-এ যাও, UPDATE NOW ক্লিক করো।
  2. Manual বেছে নাও। Online নয়, কারণ Online আবার সবচেয়ে নতুন সংস্করণ বসিয়ে দেবে।
  3. evation_Software_2.04.bin বাছো আর START চাপার আগে ফাইলের নামটা আরেকবার দেখো।
  4. অপেক্ষা করো। ফ্ল্যাশের পর মোটর ক্যালিব্রেট করে আর একটু কাঁপতে পারে। ড্রাইভপ্যাক নাড়িও না।
  5. system_profiler দিয়ে আবার দেখো। আমারটা এবার বলল evation v2.04।

ডাউনগ্রেডের পর আবার পড়েও দেখাল 24.98 km/h। শুধু ফার্মওয়্যার বদলালে কিছুই আনলক হয় না।

ধাপ ৪, 55 km/h লেখা

.venv/bin/python fazua_mac.py 55 --force

টুলটা দেখাল 24.98 km/h, raw 694 থেকে বদলে 55.00 km/h, raw 1528। তারপর "Write cycle acknowledged by bike", তারপর সেটা নিজেই মানটা আবার পড়ে নিল। "SUCCESS: bikeMaxSpeed is now 55.01 km/h"। কয়েক সেকেন্ড পর আলাদা করে পড়েও একই কথা বলল, wheel length তখনও 2121 mm।

টুলটা ৫ থেকে ৭৫ কিমি/ঘণ্টা নেয়। আমি ৫৫ বেছে নিয়েছি কারণ দেখতে চাই কেমন লাগে। আমার এজেন্ট ৪৫ বলেছিল, কারণ মোটরের শক্তি অফুরন্ত নয় আর একটা গতির উপরে বেশিরভাগটা যে-কোনো হালেই তোমার পা থেকে আসে। তুমি যা-ই সেট করো, মোটর শুধু আরও বেশিক্ষণ সাহায্য করে, নিজে থেকে বাইককে দ্রুত বানায় না।

ধাপ ৫, আবার বাইকে ফেরত

  1. কেবল খোলো, USB ক্যাপটা হাত দিয়ে আবার পেঁচিয়ে দাও, ১ থেকে ১.৫ Nm। ক্যাপ ছাড়া ড্রাইভপ্যাক জলরোধী নয়।
  2. ড্রাইভপ্যাকটা বাইকে ঢোকাও, ক্লিক শব্দ না হওয়া পর্যন্ত।
  3. চালু করো।

আমার বাইকে রিমোটটা তখন সাদা ঝলমল করতে লাগল, উপরে দুটো LED আর নিচে দুটো, পালাক্রমে। দেখতে এররের মতো লাগে। কিন্তু তা নয়। Fazua তার আপডেট গাইডে লিখেছে "Flashing LEDs indicates an update of the remote. Do not touch the remote during the update and do not switch off the e-bike." ড্রাইভপ্যাক রিমোটটাকে নিজের ফার্মওয়্যার লেভেলে নিয়ে আসে। আমারটা একবার বন্ধ হয়ে গেল, আবার জেগে উঠল, আর তারপর সব সবুজ।

তারপর আমি পরীক্ষা করলাম। মনে হচ্ছে কাজ করছে। সঠিক টপ স্পিড এখনো জানি না, কারণ বাইকে ডিসপ্লে নেই। পরেরবার হ্যান্ডেলবারে একটা ফোন আর GPS স্পিডোমিটার লাগানো থাকবে।

পথে কী ভুল হলো

আমার এজেন্ট নিজে থেকেই ম্যাকের টুলবক্সে ক্লিক করে ফেলেছিল, এবং প্রথম ক্লিকটি FIRMWARE UPDATE-এর বদলে CALIBRATION-এ গিয়ে পড়েছিল। এটি কেবল পেজটি খুলেছিল, কিছুই শুরু হয়নি। তারপর Manual-এ ক্লিকটি পৌঁছায়নি, কারণ ব্যাকগ্রাউন্ডে পাঠানো ক্লিকগুলি ওই ডায়ালগে পৌঁছায়নি। আমার এজেন্ট সেখানেই থেমে গিয়েছিল, কারণ START-এ একটি ভুল ক্লিক আবার 2.50 ইনস্টল করে দিত। আমি নিজেই Manual এবং ফাইলটিতে ক্লিক করেছিলাম।

প্রথম দুটি রাইট প্রচেষ্টা ব্যর্থ হয়েছিল। টুলটি লেখার আগে হ্যাঁ চায়, এবং আমার এজেন্ট যেভাবে উত্তরগুলি দিয়েছিল তা ওই প্রশ্নে পৌঁছায়নি। কিছুই লেখা হয়নি, পরে পড়ার পরও 24.98 কিমি/ঘণ্টা দেখাচ্ছিল। --force দিয়ে এটি কাজ করেছিল।

পরে আমি ড্রাইভপ্যাকটি আবার বের করেছিলাম, USB ক্যাপটি বন্ধ করেছিলাম এবং চুম্বকটি সরিয়েছিলাম, এবং তখন উপরের LEDটি লাল ছিল। লাল মানে চুম্বক নয়। ফাজুয়া ম্যানুয়াল বলছে উপরে লাল মানে ড্রাইভপ্যাক এবং বটম ব্র্যাকেটের মধ্যে সংযোগ ত্রুটি, ফ্রেমের সেই অংশ যেখানে এটি প্লাগ হয়। আমি এটি বের করেছিলাম, সংযোগগুলি পরীক্ষা করেছিলাম, ক্লিক শব্দ না হওয়া পর্যন্ত আবার ঠেলে ঢুকিয়েছিলাম, এবং এটি ঠিক ছিল।

এবং 15 মিনিট দাঁড়িয়ে থাকার পর সিস্টেমটি নিজে থেকেই বন্ধ হয়ে যায়। এটাও স্বাভাবিক, এটি ম্যানুয়ালে আছে।

ব্যাটারি, মোড এবং ফিরে যাওয়া

সীমাটি ড্রাইভপ্যাকের একটি মান। সবুজ, নীল এবং গোলাপি সবই একই 55 কিমি/ঘণ্টা ব্যবহার করে। মোডগুলি কেবল মোটর কতটা ধাক্কা দেয় এবং ব্যাটারি কত দ্রুত শেষ হয় তা পরিবর্তন করে। দ্রুত চালানো অনেক বেশি শক্তি খরচ করে, তাই 25-এর উপরে রেঞ্জ দ্রুত কমে যায়।

ফার্মওয়্যার 2.04-এ রাইডের পর ব্যাটারিও বেশিক্ষণ জাগ্রত থাকে। 2.50-এ ফাজুয়া সেই স্ট্যান্ডবাই এক থেকে তিন ঘণ্টায় কমিয়ে দিয়েছিল, পুরানো ফার্মওয়্যারে এটি আট ঘণ্টা পর্যন্ত। তাই রাইডের পর আমি LEDগুলি না নেভা পর্যন্ত ব্যাটারির বোতামটি দুই সেকেন্ড ধরে রাখি।

স্টকে ফিরে যাওয়া কেবল একটি কমান্ড, কেবল সংযুক্ত থাকলে:

.venv/bin/python fazua_mac.py 25 --force

ইপ্লাস লিখেছে যে আনলক করার পর আবার 2.50-এ আপডেট করা যায়। আমি তা চেষ্টা করিনি, তাই আপাতত আমি 2.04-এ থাকি এবং টুলবক্স বা অ্যাপে আপডেট চাপি না।

25 কিমি/ঘণ্টার উপরে বাইকটি আর পেডেলেক নয়। জার্মানিতে এটি তখন কেবল ব্যক্তিগত জমিতে চালানো যায়, পাবলিক রাস্তায় নয়, এবং ওয়ারেন্টি ও বীমা বাতিল হতে পারে। ফার্মওয়্যার ফ্ল্যাশ করা ড্রাইভপ্যাক নষ্ট করতে পারে। এখানে সবকিছু নিজের ঝুঁকিতে।