Jump to content

Efforts to develop firmware for H96 MAX V56 RK3566 8G/64G


Hqnicolas

Recommended Posts

Hi everyone!

 

I have only recently started to get into Linux. I am not very knowledgeable about Linux on ARM.
I was able to run ARMBIANv0.7BETA MMC on H96 MAX V56 RK3566 8G/64G.


The link is to the files:
https://drive.google.com/file/d/1h5O4c8MHqw1bvxvJMdfFE1KJrq8vpXhT/view?usp=drive_link


ARMBIANv0.7BETA MMC was taken as a basis. I also needed an Armbian image from the Orange Pi 3B board.


What I did:

1. MiniLoaderAll.bin and U-boot are taken from Armbian image from Orange Pi 3B board.
2. The /boot directory was moved to a separate bootfs partition.
3. Rename  file /boot/extlinux/extlinux.conf.bak in extlinux.conf.bak
4. In /boot directory boot.cmd and boot.scr files were created with the following contents

setenv docker_optimizations "on"
setenv bootlogo "false"

echo "Boot script loaded from ${devtype} ${devnum}"

if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"; fi
if test "${bootlogo}" = "true"; then
        setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}"
else
        setenv consoleargs "splash=verbose ${consoleargs}"
fi


part uuid mmc 1:2 partuuid
setenv bootargs   androidboot.console=ttyFIQ0 root=PARTUUID=${partuuid} rootwait  rw rootfstype=ext4 ${consoleargs}   no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash p>
load mmc 1:1 0x42000000 Image
load mmc 1:1 0x44000000 dtb/rockchip/rk3566-firefly-roc-pc.dtb
load mmc 1:1 0x46000000 uInitrd
booti 0x42000000 0x46000000 0x44000000


# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr


How to install this Armbian:

 

On Windows OS:


1. Download and unzip the Armbian image
https://drive.google.com/file/d/1h5O4c8MHqw1bvxvJMdfFE1KJrq8vpXhT/view?usp=drive_link

 

2. 1. Download, unzip and install the software: RKDevTool_Release_v3.15_and_DriverAssitant_v5.12
https://drive.google.com/file/d/14HWcHYHDrgUBFWholrDCKUWDPHw1r4F1/view?usp=drive_link

 

3. Run RKDevTool. Right-click in the partition list window (1). Select "Load Config". Open Armbin.cfg file from Armbian_xfce_v.0.7_MMC_8Gb.zip (2).

image.png.e0fcaf91f25c8c5ad99ab22d65190b31.png

 

4. Shutting down H96 MAX. Press the Reset button. Turn on the H96 MAX. The message "Found One MASKROM Device" should appear. (1) 
Mark all 4 sections with check marks (2)
Open 4 files for each section (3)
Check "Write by Address" (4).
Press the "Run" button (5). The download will start.
When the message "Download image OK" appears, the download is finished (6). 
H96 MAX will automatically reboot. 

Done.

 

image.png.fe8d6e1b2ce86818598f9df35f46e976.png

 

On Linux OS

 

rkdeveloptool db MiniLoaderAll.bin
rkdeveloptool wl 0x0 start.img
rkdeveloptool wlx bootfs bootfs.img
rkdeveloptool wlx rootfs rootfs.img

Edited by hzdm
Link to comment
Share on other sites

@hzdm  You don't know how much we wait for someone like you.
I will update the main topic page with your build.

Thank you, arrived in good time
kernel 6 in this little box is an hot Kubernetes.
Please share with us the Armbian terminal screenshot  without ip address and 
talk about your experience with this device.
did wifi works?
did USB2 port works?

Edited by hotnikq
Link to comment
Share on other sites

Цитата

Arrived in good time kernel 6 in this little box is an hot Kubernetes.

I'm planning on learning how Kubernetes works on the H96 MAX as well. I even bought 4 H96 MAXs for this purpose. I will put them into a cluster. The processor is a bit weak, but for this price it is a great deal. The closest competitor is Orange Pi 3B, but it is a bit more expensive.

Цитата

 

Please share with us the Armbian terminal screenshot  without ip address

 

 

image.thumb.png.9ec7cebf12166b0ffeba37fcd954960a.png

 

Цитата

 

did wifi works?
did USB2 port works?

 

 

No, WiFi and USB 2 don't work.

Цитата

talk about your experience with this device.

I don't have any experience with it yet. As soon as I can run your image V0.7ARMBIAN23 - I already shared my results on this forum.
I plan to remove xfce completely, turning it from a desktop version to a server version.

 

I tried to run the system upgrade via "sudo apt full-upgrade", but after the upgrade the system stopped starting.

How do you update Armbian on your work device?

How do you update the Armbian image for this forum? Build a new image each time according to the instructions below https://docs.armbian.com/Developer-Guide_Build-Preparation/ ?

 

Edited by hzdm
Link to comment
Share on other sites

3 hours ago, hzdm said:

No, WiFi and USB 2 don't work.

 

if you want this extra features, it can be solved by editing the DTB file
mipi DSi, display 7seg and infrared controller, all can be translated from android DTB to Linux DTB.
in my case it can be found on /boot/dtb/rockchip/rk3566-firefly-roc-pc.dtb
and the setup are made by the /boot/extlinux/extlinux.conf
an example how to manipulate this files 

 

3 hours ago, hzdm said:

I plan to remove xfce completely, turning it from a desktop version to a server version.


it can be done by the armbian config! 

 sudo armbian-config

 

3 hours ago, hzdm said:

How do you update Armbian on your work device?

 

i think to update this you will need to rebuild the entire system so:

No end-user support: built from trunk

NoUpdatesForMeToo.jpg

 

On 10/7/2023 at 7:27 AM, hzdm said:

1. Download and unzip the Armbian image

 

I Reuploaded the Build File to google drive you can use it as an second and alternative link to download
https://drive.google.com/file/d/1Hodbwqb0AzXvPMd0lm2w4bdeQ7uMjV7u/view?usp=sharing

Edited by hotnikq
Link to comment
Share on other sites

On 10/7/2023 at 7:27 AM, hzdm said:

What I did:

1. MiniLoaderAll.bin and U-boot are taken from Armbian image from Orange Pi 3B board.
2. The /boot directory was moved to a separate bootfs partition.
3. Rename  file /boot/extlinux/extlinux.conf.bak in extlinux.conf.bak
4. In /boot directory boot.cmd and boot.scr files were created with the following contents

setenv docker_optimizations "on"
setenv bootlogo "false"

echo "Boot script loaded from ${devtype} ${devnum}"

if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"; fi
if test "${bootlogo}" = "true"; then
        setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}"
else
        setenv consoleargs "splash=verbose ${consoleargs}"
fi


part uuid mmc 1:2 partuuid
setenv bootargs   androidboot.console=ttyFIQ0 root=PARTUUID=${partuuid} rootwait  rw rootfstype=ext4 ${consoleargs}   no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash p>
load mmc 1:1 0x42000000 Image
load mmc 1:1 0x44000000 dtb/rockchip/rk3566-firefly-roc-pc.dtb
load mmc 1:1 0x46000000 uInitrd
booti 0x42000000 0x46000000 0x44000000


# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr


How to install this Armbian:

 

 

U-Boot's scripting language is different from conventional programming languages such as C++, Python or Java.
how did you learn it?
did you came from other linux distribuition?


 

3 hours ago, hzdm said:

I'm planning on learning how Kubernetes works on the H96 MAX as well.


i think you was creating an universe before making the kubernetes cluster.
keep pushing!
 

 

Edited by hotnikq
Link to comment
Share on other sites

Цитата

if you want this extra features, it can be solved by editing the DTB file
mipi DSi, display 7seg and infrared controller, all can be translated from android DTB to Linux DTB.
in my case it can be found on /boot/dtb/rockchip/rk3566-firefly-roc-pc.dtb
and the setup are made by the /boot/extlinux/extlinux.conf
an example how to manipulate this files 

If USB, WiFi and display 7seg works that would be great. Thanks for the tip. I'll try to figure out the DTB.

Цитата

i think to update this you will need to rebuild the entire system so:

I was able to build and run Armbian_23.11.0_server on my H96MAX by building it for a station-m2 device and replacing the dtb file. It turned out to be easier than I thought. I just need to figure out how to set up an automatic Armbian build with the right dtb file, the right partitions and boot.cmd.

Цитата

U-Boot's scripting language is different from conventional programming languages such as C++, Python or Java.
how did you learn it?
did you came from other linux distribuition?

I just took the boot.cmd from the Orange Pi 3B Armbian Image, and trimmed it down to the bare minimum.
The U-boot language is very similar to bash, and intuitive.
I have some familiarity with Linux administration. This is my first experience with Linux maintenance.

Цитата

i think you was creating an universe before making the kubernetes cluster.
keep pushing!

Carl Sagan is a very wise man. 

Link to comment
Share on other sites

17 hours ago, hzdm said:

I just need to figure out how to set up an automatic Armbian build with the right dtb file


to Compile armbian you will need a x86 desktop

 

you will need to select a CUSTOM KERNEL option when asked by the armbian comple system

 

./compile.sh build BOARD=station-m2 KERNEL_CONFIGURE=yes

 

and when asked to EDIT KERNEL SETTINGS


go to the compile KERNEL FOLDER and put the DTB files inside kernel

after that :

 

On 6/15/2023 at 6:43 AM, hotnikq said:

any resemblance to this topic is mere adaptation

 

Mount that image virtual device like /media/armbian_boot

fdisk -l your-armbian-image-for-sd-card.img
mount -o loop your-armbian-image-for-sd-card.img /media/armbian_boot

if you can't "like WSL2"

sudo apt-get install kpartx
sudo kpartx -av your-armbian-image-for-sd-card.img
sudo mount -o loop /dev/mapper/loop0p1 /media/armbian_boot


Second Step:  prepare an sd card or usb flash dummy , can be anithing with 6gb

fdisk /dev/mmcblk1
N
default
default (lower this value to match the size of your root image)
T
1
W


third step: format that flash drive for ext4

mkfs.ext4 /dev/mmcblk1p1

 

fourth step: mount that clear partition and copy the entire virtual drive to the flash device

mount /dev/mmcblk1p1 /mnt

rsync -avx /media/armbian_boot /mnt

 

fifth Step: Edit your uuid From Armbian Boot config "uuid for /dev/mmcblk1p1"

blkid

nano -w /mnt/boot/extlinux/extlinux.conf


sixth step: make an hardware RAW.img from hardware flash drive with these parameters

sudo dd if=/dev/mmcblk1p1 of=~/root.img bs=4096 status=progress

PS: can be /dev/SDA" I do it on my h96max" so it's mmcblk1

 

now you have an ROOT IMAGE MADE BY YOURSELF!

./mkupdate.sh 


Uboot Legacy, Parameter.txt to create the Rockchip image

 

 

Link to comment
Share on other sites

I was able to get USB 2.0 up and running.
Here's the DTB file you need.
 

https://drive.google.com/file/d/1_Ajk-TxBgp3hvuU5PTWW08wGRVNR0y6f/view?usp=drive_link

 

To make USB 2.0 work, you need to:
1. Rename the file rk3566-h96-max-v56_v1.dtb to rk3566-firefly-roc-pc.dtb
2.  Replace the file /boot/dtb/rockchip/rk3566-firefly-roc-pc.dtb with it.

 

I may be able to get WiFi up and running in the future. But it may take more time.

Edited by hzdm
Link to comment
Share on other sites

19 hours ago, hzdm said:

I was able to get USB 2.0 up and running.
Here's the DTB file you need.

Good firmware, USB works with the dtb I replaced! Thanks for your effort.

Thought the wifi and hdmi out did not work, but the kernel 6 is more important. 

I almost threw this box into the trash can...  thank you @hzdm

 

Link to comment
Share on other sites

On 10/18/2023 at 12:09 AM, hzdm said:

I was able to get USB 2.0 up and running.
Here's the DTB file you need.
 

https://drive.google.com/file/d/1_Ajk-TxBgp3hvuU5PTWW08wGRVNR0y6f/view?usp=drive_link

 

 

I found the dtb.img from update.img, is it genarated by your DTS_DTB_rk3566H96MAX   @hotnikq

I remember the debian 10 linaro firmware(kernel 4.19.193) can use wifi, usb and hdmi output , but I don't know how to extract the dtb file from it

 

dtbo.img from update.img as below 

dtbo.img

Link to comment
Share on other sites

On my firmware "ARMBIANv0.7BETA MMC on H96 MAX V56 RK3566 8G/64G" - HDMI works. Only I found one peculiarity. If there is no monitor connected during power on - HDMI will not work. Accordingly - if the monitor is connected during startup - HDMI works properly.


Is it the same with H96 MAX V56 4Gb? 

 

Regarding the work of WiFi. Unfortunately, WiFI operation is not only DTB file: it is also drivers and possibly kernel settings.
I managed to find an image too - which has WiFi working (but no HDMI). This is an Armbian image for Panther-X2 board, a build from OpenHub project) https://github.com/ophub/amlogic-s9xxx-armbian/releases/download/Armbian_jammy_save_2023.10/Armbian_23.11.0_rockchip_panther-x2_jammy_6.1.57_server_2023.10.13.img.gz.

Using dtb from Panther-X2 - no results - WiFi did not work.
For WiFI to work - driver for BCM4335 must be loaded

 

hz@armbian:~$ ethtool -i wlan0                                                                                                                                                                              
driver: brcmfmac                                                                                                                                                                                            
version: 6.30.171.24                                                                                                                                                                                        
firmware-version: Station/P2P)                                                                                                                                                                              
expansion-rom-version:                                                                                                                                                                                      
bus-info: mmc2:0001:1                                                                                                                                                                                       
supports-statistics: no                                                                                                                                                                                     
supports-test: no                                                                                                                                                                                           
supports-eeprom-access: no                                                                                                                                                                                  
supports-register-dump: no                                                                                                                                                                                  
supports-priv-flags: no                                                                                                                                                                                     
hz@armbian:~$ sudo dmesg | grep brcmfmac                                                                                                                                                                    
[    5.930622] brcmfmac: F1 signature read @0x18000000=0x16014335                                                                                                                                           
[    5.962902] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4335-sdio for chip BCM4335/1                                                                                                            
[    5.965362] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac4335-sdio.panther,x2.bin failed with error -2                                                                                    
[    5.980008] brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac4335-sdio.clm_blob failed with error -2                                                                                          
[    6.204159] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available                                                                               
[    6.205664] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4335/1 wl0: Mar 24 2013 20:36:01 version 6.30.171.24.20 (B0 Station/P2P)                                                                       
[    6.278966] usbcore: registered new interface driver brcmfmac                                                                                                                                            
hz@armbian:~$   

 

Link to comment
Share on other sites

3 hours ago, hzdm said:

On my firmware "ARMBIANv0.7BETA MMC on H96 MAX V56 RK3566 8G/64G" - HDMI works. Only I found one peculiarity. If there is no monitor connected during power on - HDMI will not work. Accordingly - if the monitor is connected during startup - HDMI works properly.

Sorry, hdmi works, but low performace, may be GPU acceleration not enabled 

Link to comment
Share on other sites

14 hours ago, hzdm said:

HDMI works. Only I found one peculiarity. If there is no monitor connected during power on - HDMI will not work. Accordingly - if the monitor is connected during startup - HDMI works properly.


This is something about the EDID
The process that initialize display on ARM devices isn't Plug and Play
it need the EDID code to start with system. like it was part of the GPU driver.

Link to comment
Share on other sites

17 minutes ago, hotnikq said:

Mali GPU from rockchip RK3566 is not Open source!

Ok, I get it. Only operating systems without a desktop environment are suitable to this box

15 minutes ago, hotnikq said:

it's kernel 4
it uses the DTB from android.
android is an kernel 4 fork from google.
we are here glue things on kernel 6.

I'm sorry for my poor knowledge. I thought the kernel version had nothing to do with the DTB file

 

 

Now I use this box with kernel6 as a NAS, replace the old orangepi3 box,  the faster cifs transfer speed is great. Giving up for using the box as all-in-one device, THX

Edited by mvpwar
Link to comment
Share on other sites

35 minutes ago, mvpwar said:

Only operating systems without a desktop environment are suitable to this box


you can do it! 
I have a tip for you to do what you are imagining!!!
Linux distros with ARC Manjaro architecture have GPU acceleration working perfectly on MALI GPU's. 
 

35 minutes ago, mvpwar said:

Giving up for using the box as all-in-one device, THX


you can make a Manjaro ROOT compilation
Based on Armbian,
If you manage to compile it please come back here and share

I start talking about it  here
and the conclusion is here


my Rock 3a works fine as a media player device with Manjaro since 2022

Edited by hotnikq
Link to comment
Share on other sites

31 minutes ago, mvpwar said:

Now I use this box with kernel6 as a NAS,


in only in a 4gb device rk3566
i was using 2x 1TB SATA SSD on USB3.0

 

Docker with CasaOS:
Web tunnel over cloudflare to enable access to nextcloud with HTTPs.
Web Nextcloud application dockered to share things with windows over samba to local network.

on MacOS and Linux devices i used to share files from Local Lan over Cifis agaist baremetal.

this device as a NAS work at gigabit speeds, all over the place with wifi6

 

Quote

b.thumb.jpg.b02672df538546345d2f76c3779b7475.jpg

 

Quote

a.thumb.jpg.e43ef352476552b30dfb214d503bad32.jpg

 

Edited by hotnikq
Link to comment
Share on other sites

7 hours ago, hotnikq said:

i was using 2x 1TB SATA SSD on USB3.0

 

nice, Maybe you need the 10gb network adapter more.  I was using 2x 3TB SATA HDD with Raid1 on orico USB3 external hard drive enclosure, HDD max speed is 120m/s,  the same as a gigabit network cable

Old orangpi3 box only running the 50m/s cifs transfer speed, since the poor CPU performance

7 hours ago, hotnikq said:

my Rock 3a works fine as a media player device with Manjaro since 2022

that's great, My initial idea was to use this h96-max to run NAS and somtimes play web online videos or video on usb local storage 

Link to comment
Share on other sites

Unexpectedly, to start WiFi, you just need to copy the drivers for it to the right directory.
Copy the brcmfmac4335-sdio.txt and brcmfmac4335-sdio.firefly,rk3566-roc-pc.bin files to the /lib/firmware/brcm directory and restart the device. After that we can connect to WiFi (at least via command line, I haven't checked it via GUI).

 

If GUI doesn't work - you can connect to WiFi via console with the command
nmcli device wifi connect My-WiFi-Point password 12345678

 

 

https://drive.google.com/file/d/1TeoPe_pO5es247c-5TGLfc4cXiKcPr56/view?usp=share_link

Link to comment
Share on other sites

On 10/17/2023 at 1:09 PM, hzdm said:

I was able to get USB 2.0 up and running.
Here's the DTB file you need.


Attached, DTB and DTS Files that work with all USB ports
 

Today I start the Recompile Session.
Command:

./compile.sh build BOARD=station-m2 BRANCH=edge BUILD_DESKTOP=yes BUILD_MINIMAL=no DESKTOP_APPGROUPS_SELECTED='3dsupport browsers desktop_tools internet office programming remote_desktop' DESKTOP_ENVIRONMENT=cinnamon DESKTOP_ENVIRONMENT_CONFIG_NAME=config_base KERNEL_CONFIGURE=yes RELEASE=jammy


Whats news?

Detect USB 2.0 port ✔️ 
Works Wifi Broadcom ✔️ 

Updated Armbian 23.11 ✔️ 

runs kernel 6.2 DESKTOP ✔️

Boot on Linux Cinnamon Ambian✔️

display video HDMi ✔️

detect internal MMC ✔️

Detect SD-CARD ✔️ 

Detect USB 3.0 port ✔️


Please test this image and report it here.
Use this tutorial to test this image

 

use the same update.img
and apply this new 23.11 rootfs insted of 23.08

also use the new 23.11 update image

NEW ROOT FILE ARMBIAN 23.11 CINNAMON


The changes are:
Line 299 and Line 304
Amazing job @hzdm

Quote

 

OLD:

	usb@fcc00000 {
		compatible = "rockchip,rk3568-dwc3\0snps,dwc3";
		reg = <0x00 0xfcc00000 0x00 0x400000>;
		interrupts = <0x00 0xa9 0x04>;
		clocks = <0x0e 0xa6 0x0e 0xa7 0x0e 0xa5>;
		clock-names = "ref_clk\0suspend_clk\0bus_clk";
		dr_mode = "host";
		phy_type = "utmi_wide";
		power-domains = <0x10 0x0f>;
		resets = <0x0e 0x94>;
		snps,dis_u2_susphy_quirk;
		status = "disabled";
		phys = <0x12>;
		phy-names = "usb2-phy";
		extcon = <0x13>;
		maximum-speed = "high-speed";
		phandle = <0xcf>;
	};

 

 

 

 

Quote

 

NEW:

	usb@fcc00000 {
		compatible = "rockchip,rk3568-dwc3\0snps,dwc3";
		reg = <0x00 0xfcc00000 0x00 0x400000>;
		interrupts = <0x00 0xa9 0x04>;
		clocks = <0x0e 0xa6 0x0e 0xa7 0x0e 0xa5>;
		clock-names = "ref_clk\0suspend_clk\0bus_clk";
		dr_mode = "host";
		phy_type = "utmi_wide";
		power-domains = <0x10 0x0f>;
		resets = <0x0e 0x94>;
		snps,dis_u2_susphy_quirk;
		status = "okay";
		phys = <0x12>;
		phy-names = "usb2-phy";
		extcon = <0x13>;
		maximum-speed = "high-speed";
		phandle = <0xc9>;
	};

 

 




 

rk3566-firefly-roc-pc.dtb rk3566-firefly-roc-pc.dts

Edited by hotnikq
Link to comment
Share on other sites

@hotnikq

 

I soldered in SD Card holder. Are you sure about "Detect SD-CARD" success you reported? I don't see it.

Can you confirm the sd card is wired to mmc@fe2b0000?

 

Here's relevant dts snippet:

mmc@fe2b0000 {
		compatible = "rockchip,rk3568-dw-mshc\0rockchip,rk3288-dw-mshc";
		reg = <0x00 0xfe2b0000 0x00 0x4000>;
		interrupts = <0x00 0x62 0x04>;
		clocks = <0x0e 0xb0 0x0e 0xb1 0x0e 0x18a 0x0e 0x18b>;
		clock-names = "biu\0ciu\0ciu-drive\0ciu-sample";
		fifo-depth = <0x100>;
		max-frequency = <0x8f0d180>;
		resets = <0x0e 0xd4>;
		reset-names = "reset";
		status = "okay";
		supports-sd;
		bus-width = <0x04>;
		cap-mmc-highspeed;
		cap-sd-highspeed;
		cd-gpios = <0x21 0x04 0x01>;
		disable-wp;
		pinctrl-names = "default";
		pinctrl-0 = <0x60 0x61 0x62 0x63>;
		vmmc-supply = <0x1b>;
		phandle = <0xf6>;
	};

 

Thanks;

Bill

Link to comment
Share on other sites

23.10.2023 в 12:20, Sunil sankar сказал:

@hzdm super wifi works . Can you also share the armbian server version you had build. 

 

I built an Armbian 23.11.0 server.
WiFi and USB 2.0 are working.
The installation is similar to the previous image.
I think this is a temporary image. I want to improve its build in the future.

 

https://drive.google.com/file/d/1MjFe_Z_gBY7d_-K8kxJ6JUg8Wkzqk-JZ/view?usp=drive_link

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines